Hello, Ded!
You wrote on Fri, 23 Jun 2006 12:34:16 +0400:
[сорри, пропускаем...]
D> Вот. Тоже потеоретизировал.
Хорошо потеоретизировал, логично по крайней мере. :) И я примерно так же
теоретизировал, но не так доходчиво...
D> Только вот какая фигня получается :) Не воспроизводится у меня вся эта
D> канитель на 12654 билде RC2 :-D SC_LST_DATEREG INDEX ON SC_LST(DATEREG)
D> RDB$FOREIGN862 INDEX ON SC_LST(SCTO)
D> select count(*) from sc_lst where scto=1 and datereg between
D> '01.01.2005' and '01.02.2005'
D> PLAN (SC_LST INDEX (RDB$FOREIGN862, SC_LST_DATEREG))
Изначально было не совсем так... Во-первых, зависит от ODS - должна быть
11.0 (какая у тебя не знаю, просто уточняю. На ODS 10.1 не так работает), а
во-вторых, запрос должен быть в виде
select count(*)
from sc_lst
where scto=1
and datereg between :DATE_FROM and :DATE_TO
Дело в параметрах. Из программы-то можно и явно вписать даты, а как быть в
процедуре? И было там в where еще одно поле с параметром. По тому полю был
тоже был индекс с хорошей (относительно) селективностью.
--
With best regards, Yuri Grabar.
--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---