Имя: Пароль:
1C
1С v8
Временная таблица или таблица значений, что быстрее.
, , ,
0 kolts23381
 
19.08.19
20:15
Что срабатывает быстрее временная таблица или таблица значений. Много сказано что плохо использовать запросы в цикле(понятное дело не всегда - есть исключения), а про временные таблицы тоже самое можно сказать или нет? Условие - субд MS SQL, а также сервер приложений и субд на одном компьютере.
Не рассматриваем сложные конструкции, которые удобнее решать запросом, рассматривает только простые отборы, с которыми не сложно работать и с тз.
1 xXeNoNx
 
19.08.19
22:36
думаю что самокат быстрее велосипеда сработает
Все в кучу собрал....
Научись формулировать вопросы...
2 MakaMaka
 
19.08.19
23:00
(0) Да.
3 palsergeich
 
20.08.19
00:11
(0) смотря где
4 Aleksandr N
 
20.08.19
00:17
(0) Jesus!
5 Chameleon1980
 
20.08.19
04:29
Мммм. Что?
6 СтепаDS
 
20.08.19
04:43
(0) Точно!
7 13_Mult
 
20.08.19
07:50
Потому что гладиолус!
8 asady
 
20.08.19
07:59
(0) попробую перевести...
Запрос = новый запрос;
Запрос.текст = "выбрать * поместитт вт_тз из &тз";
Запрос.установитьпараметр("тз", тз);
Запрос.менеджервиеменныхтаблиц = новый менеджервремпнныхтаблиц;
Заррос.выполнить();
Запрос.текст = "выбрать цена из вт_тз где номпнклаиура = & номенлкатура";
Для каждого стр из товары цикл
   Запрос.установитьпараметр("номенклатура",стр.номенклатура);
   Выборка = Запрос.выполнить().выбрать();
   Если выборка.следующий() тогда
       Стр.цена = выборка.цена;
    Конецесли;
Конеццикла;

Против классического решения в виде получения результата запроса вне цикла то есть по сути передачей между скулем и сервером 1с некоего массива данных

ТС интресуется на ьольшом количестве строк может ли быть оправдан путь с запросом в цикле из временной таблицы.

Я лишь попробовал перевести ...
Развиваю телепатические способности ;)
9 Мимохожий Однако
 
20.08.19
08:03
(0) Померяй. Нам расскажешь.
10 Сияющий в темноте
 
20.08.19
08:08
Индексированная таблица значений будет быстрее,так как поиск по ней не сильно отличается от поискс в  таблице sql,а обращения к серверу не будет.
и вообще,если 1с выполняет подготовку запроса при установке его текста,то разница будет несущественной,а если при каждом выполнить будет выбираться план запроса,то будет явно медленней.
Насколько я помню,1с не умеет Prepare Execute,из-за этого у них такая паническая боязнь запросов в цикле,и нормальные программисты просто это не всегда могут понять,т.к.привыкли к другому поведению запросов в цикле.
11 FIXXXL
 
20.08.19
08:40
в общем случае ТЗ - быстрее будет
Но как ты получил эту ТЗ? И для чего? Ускорения можно добиться и пересмотром алгоритмов в целом
12 asady
 
20.08.19
08:41
(10) допустим требуется обработвть массив под миллион строк. Затраты на передачу на север 1с со скуля будут значительны, хранение и скан по таблице значений займет время. А хранение временной таблицы на скуле можно и кжшировать и по фонкам попробовать раскидать
13 Cyberhawk
 
20.08.19
08:48
"хранение временной таблицы на скуле" // Может, ты хотел сказать "хранение таблицы значений на сервере 1С"? Сколько опечаток...
14 asady
 
20.08.19
19:08
(13) temptable остается на скуле,
Обрабатываем параллельно запросы к ней из фоновых заданий.как априант
15 Лефмихалыч
 
20.08.19
19:14
(0) всё зависит от всего и в данном случае это всё имеет решающее значение
16 NorthWind
 
20.08.19
19:21
(15) это вам не это...
17 Asmody
 
20.08.19
22:25
42
18 Borteg
 
20.08.19
23:47
(12) стоит обрабатывать порциями, и точно избегать тз в миллион строк, у меня на боевой базе данные от ОФД приходят в экселе по 15-20 миллионов строк. Если это собрать в ТЗ, сервер 1с можно тушить, а вот работа через ADO по 25000 строк весь этот "массив" обрабатывает за 30 минут.
Вообще следует избегать таблиц больше 50000 строк(это для моего сервера и вычислено практическим способом). Обработка данных через запрос(временная таблица) происходит значительно быстрее.
Но это на моих задачах, при моих условиях.
Изначально было тоже ТЗ, но как только оно достигало около миллиона строк, обработка сильно замедлялась.
19 rogachev
 
21.08.19
00:03
запросы всегда быстрее . временная таблица у нас где ?
20 palsergeich
 
21.08.19
00:04
(19) Не всегда.
Для каких нибудь извращений типо графов реализация на ТЗ может оказаться существенно быстрее запросной техники.
Все зависит от задачи.
21 Fram
 
21.08.19
00:08
(17) 43 же вроде
22 palsergeich
 
21.08.19
00:08
(21) Из классики (автостопом по галлактике) - 42
23 palsergeich
 
21.08.19
00:09
24 rsv
 
21.08.19
09:18
(0) в движке 1с можно работать с тз запросом.
При этом она все равно должна быть представлена ...
Временной таблицей. Так что на выходе все едино
25 kolts23381
 
21.08.19
13:22
В принципе примерно понятно что к чему. Если таблица очень  большая,то нужно какое то время чтоб получить ее из базы данных. С другой стороны если это тз она будет занимать много памяти.
А что насчет обращения ко временным таблицам в цикле?
26 VladZ
 
21.08.19
13:32
(0) Давай конкретный пример. Несешь какой-то поток сознания - а по делу ни слова не сказал.
27 H A D G E H O G s
 
21.08.19
13:33
(25) В принципе понятно, что вы ничего не поняли.
28 Cyberhawk
 
21.08.19
13:41
(14) Тогда не ясно, о каких параллельных ФЗ речь, если МВТ никак не сериализуется
29 novichok79
 
21.08.19
13:47
без гугла, обход таблицы значений средствами 1С срабатывает быстрее, чем загрузка этой таблицы в МВТ и какие-то манипуляции чисто с ней.
при помещении таблицы значений в МВТ, сервер предприятия 1С преобразует таблицу в запрос вида insert values, и потом грузит это дело на SQL сервер, а потом получает результат запроса, грузит его в память сервера предприятия 1С.
а если дрочить таблицу в памяти, то этих обменов жидкостями с SQL сервером удастся избежать.