Имя: Пароль:
1C
 
ТаблицаЗначений.Найти() чем является с точки зрения платформы
0 yavasya
 
12.07.18
13:10
Добрый день коллеги!

Помогите решить спор, я считаю что в цикле делать ТаблицаЗначений.Найти() является непроизводительным - нужно сделать запрос к обеим таблицам значений.
ТаблицаЗначений.Найти() чем является с точки зрения платформы ?
1 Вафель
 
12.07.18
13:13
в зависимости от того есть индекс или нет
2 Вафель
 
12.07.18
13:13
если нет - то перебор
3 Вафель
 
12.07.18
13:14
А еще можено мердж джойн написать
4 Малыш Джон
 
12.07.18
13:15
таблица значений с точки зрения платформы является одной из структур для хранения данных в оперативной памяти компьютера
5 МихаилМ
 
12.07.18
13:18
скд умеет делать левое соединение тз + фильтрация
также фильтровать тз умеет построительзапроса.
6 lodger
 
12.07.18
13:21
(0) вы правильно считаете. в рамках оптимизации можно этим заняться.
по вопросу ответы в (1) и (2)
7 yavasya
 
12.07.18
13:22
всем спасибо
8 Salimbek
 
12.07.18
13:23
(0) Быстрее тогда использовать Соответствие. То, чего ищешь - в Ключ, а остальные значения в Структуру в Значение. Или, если ТЗ уже есть, то в Значение - номер строки ТЗ
9 Salimbek
 
12.07.18
13:25
(0) Но может быстрее запросами, 1-й уложить 1-ю ТЗ, 2-й - вторую (по ключевым полям желательно создать Индексы), 3-й запрос из них одним махом вытащит все, что нужно.
10 МихаилМ
 
12.07.18
13:30
(9) попробуйте обработать тз в 100к строк запросом.
устанете ждать. запрос - самый медленный инструмент обработки тз.
11 pavig
 
12.07.18
13:32
(8)
Быстрее - индексировать. И никаких танцев.
(1), (2) + 100500
12 yavasya
 
12.07.18
13:35
с точки зрения отладки мне тоже больше нравится результат запроса, иначе обе ТЗ в эксель выгружать и там соединять
13 H A D G E H O G s
 
12.07.18
13:38
Ни один из ответов не является правильным, ну, кроме (3) :-)
14 H A D G E H O G s
 
12.07.18
13:40
95% даже не поняли о чем в (3)
15 yavasya
 
12.07.18
13:44
(14) расскажи пожалуйста в двух словах
16 H A D G E H O G s
 
12.07.18
13:51
(15) Когда 2 таблицы КрайнеВелики - их проще обойти в одном цикле, предварительно отсортировав по ключам связи
17 H A D G E H O G s
 
12.07.18
13:52
Когда одна таблица велика, а 2 - мала - проще в большой создать Индекс и обойти Циклом с поиском. Цикл по малой таблице, поиск по индексу большой.
18 yavasya
 
12.07.18
13:53
(16) понятно !
19 H A D G E H O G s
 
12.07.18
13:57
Ну и если на БольшуюТаблицу наложено допполе фильтра, попадающего в индекс, не принадлежащее условию связи, а условие связи на равенство - проще создать хэштаблицу поиска для малой таблицы, а при проходе по дереву индекса - сразу проверять строку индекса, удовлетворяющую условию допполя на вхождение в хэш таблицу. Так, в принципе, НАВЕРНОЕ, я надеюсь работает hash-join, но в 1С ты его не изобразишь.
20 H A D G E H O G s
 
12.07.18
14:06
Так работает SQL, в самых лучших случаях.
21 13_Mult
 
12.07.18
14:26
http://qps.ru/KYBEJ  Там почти на 1С написано :-)