Вот есть у меня вопрос.
Почему запрос
.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 секунд!
Может, я что-то делаю не так? Может, есть ЕЩЕ какая-либо тонкость в использовании индексов?
Сортировки & индексы
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 147
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск
- Контактная информация:
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Сортировки & индексы
Потому что действительно используешь индекс PRMC+DOPRTTN+DOPRTTN, которого нет!
SpSopr.cMCUsl справа не участвует в логической связи
SpSopr.cMCUsl справа не участвует в логической связи
Жду выхода Вселенная 2.12!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Сортировки & индексы
В первом случае ипользуется индекс SPSOPR07.
Сегмент cmcusl у тебя пропущен в обоих случаях (SPSOPR04&SPSOPR15) .
Беги с katsopr-a. Тогда быстро получишь, то что нужно...
Сегмент cmcusl у тебя пропущен в обоих случаях (SPSOPR04&SPSOPR15) .
Беги с katsopr-a. Тогда быстро получишь, то что нужно...