|
|
|
Как это работает?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Объясните плиз... Есть две серверные проседуры, возвращают они одно и тоже, но по отрабтке (по времени и по сжиранию ресурсов) это "небо и земля" объясните, кто может, почему так? Процедура 1 (очень медленная и ресурсоемкая) CREATE PROCEDURE SUM_NACH_ABTRAF_CEPOTHKA ( KOD INTEGER, DATE_S DATE) RETURNS ( NACH_AB_TRAF __MONEY) AS begin /* Procedure Text */ SELECT sum(nachisleniy.summa) as NACH_AB_TRAF FROM nachisleniy WHERE (nachisleniy.kod_ab in (select cepothka.kod from cepothka(:KOD)) and nachisleniy.date_mount<=:DATE_S) into :NACH_AB_TRAF; suspend; end Процедура 2 (быстрая) CREATE PROCEDURE SUM_NACH_ABTRAF_CEPOTHKA_1 ( KOD INTEGER, DATE_S DATE) RETURNS ( NACH_AB_TRAF __MONEY) AS DECLARE VARIABLE KODDD INTEGER; DECLARE VARIABLE SUMMA __MONEY; begin /* Procedure Text */ SUMMA=0; NACH_AB_TRAF=0; for select cepothka.kod from cepothka(:KOD) into :KODDD do begin SELECT sum(nachisleniy.summa) as NACH_AB_TRAF FROM nachisleniy WHERE (nachisleniy.kod_ab =:KODDD and nachisleniy.date_mount<=:DATE_S) into :SUMMA; if (SUMMA is null) then begin SUMMA=0; end NACH_AB_TRAF=NACH_AB_TRAF+SUMMA; end suspend; end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2003, 21:39 |
|
||
|
Как это работает?
|
|||
|---|---|---|---|
|
#18+
в первой у тебя выбираются все! строки из "начисление" и для каждой строки выбираетютя все! строки из "цепочки". а затем только отсекаются строки по условию. а во второй хп у тебя сначала выбираются все! строки из цепочки, а зате выбираются определенные условием строки из "начисления". сам понимаешь, чем меньше выберется по условию из начисления, тем быстрее будет вторая. а первая всегда одинаково будет перебирать произведение всех строк "начисления" и всех строк "цепочки" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 00:31 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32357378&tid=1579475]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
173ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 471ms |

| 0 / 0 |
