Возник тут у нас спор, как оптимальнее (по скорости выполнения) писать запрос в хранимке.
1) for select ...
   from T1 join T2 on T1.F1+0=T2.F1
   into ...
2) for select F1, ... from T1 into :FF1 do
     for select ... from T2 where T2.F1=:FF1
   into ...
Я всегда был уверен, что первый вариант эффективнее, а по экспериментам получается, что второй, причем почти вдвое. Может кто-нибудь объяснить почему?
Планы:
1) JOIN (T1 NATURAL,T2 INDEX (RDB$PRIMARY18))
2) (T1 NATURAL)
   (T2 INDEX (RDB$PRIMARY18))
Количество чтений
1)  T1 Non-Indexed reads 18762
    T2 Indexed reads 18762
1)  T1 Non-Indexed reads 18762
    T2 Indexed reads 4736       <-- почему???
FB 1.5.3

Ответить