|
Временная таблица или таблица значений, что быстрее. | ☑ | ||
---|---|---|---|---|
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 сервером удастся избежать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |