|
Оптимизация отчета, вытаскиваем запрос из цикла
| ☑ |
0
chingiz
26.10.11
✎
15:39
|
Итак есть отчет, в котором выводится время с периодичностью 5 минут. Все периоды занесены в массив, по которому идет цикл. Внутри цикла выполняется запрос на срез последних с 3х регистров. Таким образом видим актуальные цифры на каждое время. Но у меня получился типичный быдлокод, так что надо исправляться.
Пытался избавиться от цикла путем временной таблицы и пакета запросов. Но выполняет еще дольше...при том что я туда еще Регистр ЗначенийХарактеристик не добавил! Запрос конечно не супер выходит, много вложенных.
|
|
1
chingiz
26.10.11
✎
15:43
|
И интересно еще : вообще бывает такое, что запрос в цикле будет быстрее одного запроса(даже хорошо составленного)?
|
|
2
mikecool
26.10.11
✎
15:46
|
(1) нет
|
|
3
МихаилМ
26.10.11
✎
15:53
|
для файловой версии - возможно
для клиент-серверной - маловероятно
|
|
4
chingiz
26.10.11
✎
15:55
|
(3) ага файловая версия:\ Читал конечно про замену вложенных временными таблицами, но автор оговаривался, что даст прирост только на sql, в других случаях только затормозит.
|
|
5
FIXXXL
26.10.11
✎
15:57
|
(0) через ОБЪЕДИНИТЬ не пробовал? с динамическим построением текста запроса?
|
|
6
chingiz
26.10.11
✎
16:00
|
(5) а что объединять, даты ?
|
|
7
FIXXXL
26.10.11
✎
16:11
|
(6) запросы на срез последних
они ж по сути одинаковые? только параметр запроса (дата среза) меняется?
ну и установку изменяемых параметров можно через цикл организовать
|
|
8
chingiz
26.10.11
✎
16:21
|
(7) одинаковые. Спасибо за подсказку, подумаю. А по скорости точно быстрее выйдет? А то долго все переделывать ради попробовать.
|
|
9
chingiz
26.10.11
✎
17:03
|
Отбой операции 8) Вот лень франчу было завести тестовую sql, и тестил только на файловой базе. Попробовал по удаленке у заказчика - выполняется в 6 раз быстрее!
|
|