Сортировки & индексы

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
St.Anislav
Постоянный обитатель
Сообщения: 147
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск
Контактная информация:

Сортировки & индексы

Сообщение St.Anislav »

Вот есть у меня вопрос.
Почему запрос
.create view a as select * from spsopr, katmc
where((word(201)==spsopr.vidsopr and
spsopr.cmcusl==katmc.nrec and
d0<<=spsopr.doprttn and
d1>>=spsopr.doprttn)) and
spsopr.prmc=1;
работает (причем быстро, т.е. использует индексы),
а запрос
.create view a as select * from spsopr, katmc
where((1==spsopr.prmc and
spsopr.cmcusl==katmc.nrec and
d0<<=spsopr.doprttn and
d1>>=spsopr.doprttn)) and
spsopr.vidsopr=201;
ругается, хочет ключ PRMC+DOPRTTN+DOPRTTN для SPSOPR?

Первый запрос, судя по всему, использует индекс SPSOPR04 (VIDSOPR+CMCUSL+DOPRTTN).
Второй, ПО ИДЕЕ, должен использовать индекс
SPSOPR15 (PRMC+CMCUSL+DOPRTTN), но почему-то этого не делает.
Можно, конечно, по датам без индекса фильтровать... Да только отчет работает 15 минут вместо 10 секунд!
Может, я что-то делаю не так? Может, есть ЕЩЕ какая-либо тонкость в использовании индексов?
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Re: Сортировки & индексы

Сообщение Max_Fin »

Потому что действительно используешь индекс PRMC+DOPRTTN+DOPRTTN, которого нет!
SpSopr.cMCUsl справа не участвует в логической связи
Жду выхода Вселенная 2.12!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Сортировки & индексы

Сообщение Den »

В первом случае ипользуется индекс SPSOPR07.
Сегмент cmcusl у тебя пропущен в обоих случаях (SPSOPR04&SPSOPR15) .
Беги с katsopr-a. Тогда быстро получишь, то что нужно...
Ответить