|
|
|
быстрый запрос
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть три таблицы. Имеем запрос: select a.dt, coalesce(b.prih, 0) as prih, (select first 1 coalesce(c.ost, 0) from statost c where c.data <= a.dt and c.tid = xxxx order by c.data desc) as ost from (ar_dt a left join statprih b on a.dt = b.data and b.tovid = xxxx) В a находятся даты (идут подряд с Д1 по Д2) по которым делается выборка. В b находятся приходы (был Дn приход – есть запись, не было – нет). В c находится статистика остатков, причем для экономии остаток заносится, только если он отличается от предыдущего. Если запрос писать с двумя join’ами может получиться следующая таблица: Dt prih ost 14.02.2004 0 100 15.02.2004 10 80 16.02.2004 0 90 17.02.2004 0 null 18.02.2004 0 80 Надо, чтобы в таком случае вмесио null подставлялся предыдущий остаток Запрос с двумя join’ами выполняется ~0 ms, а полный – ~16 ms. Выборки идут по группам от 1000 до 10000 товаров, т.е. получается 16 – 160 сек., что очень много. Реально ли оптимизировать такой запрос? FB1.5 Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2004, 19:52 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32433804&tid=1579079]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 461ms |

| 0 / 0 |
