Несколько индексов в одной выборке! Возможно?

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Несколько индексов в одной выборке! Возможно?

Сообщение PViP »

Появилась такая задача, в которой необходимо выбирать из таблици oborot данные порядка 30000 тысяч раз с разными параметрами(аналитиками). Время работы хочется максимально уменьшить! Привожу исходник выборки

Код: Выделить всё

.Create  view a1
as
select * 
from oborot, spkau, SYNONYM spkau spkau1
where ((
word(127) == spkau.kodgrkau
and st_var == spkau.code
and word(10009) == spkau1.kodgrkau
and mvz_var == spkau1.code
and FDate<<= oborot.datob and LDate >>= oborot.datob
and 127 == oborot.tblos[1](noindex)
and spkau.nrec == oborot.kauos[1](noindex)
and 10009 == oborot.tblos[3](noindex)
and spkau1.nrec == oborot.kauos[3](noindex)
))
and oborot.kauos[3]<>000100000000733Dh
;
Изменяются st_vat и mvz_var, количество комбинаций порядка 30000.

Хочется чтобы использовались индексы по oborot.tblos[1] oborot.kauos[1] и oborot.tblos[3] oborot.kauos[3] но компилятор грит что нужен один составной индекс (oborot.datob oborot.datob oborot.tblos[1] oborot.kauos[1] oborot.tblos[3] oborot.kauos[3]).

Если несколько индексов одновременно нельзя использовать , то почему тогда на oborot.datob oborot.datob не ругается?

Можно ли использовать несколько индексов в одной выборке по одной таблице?
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Сообщение cruger »

В выборке всегда используется только один индекс.
Maxxi
топ-софт
Сообщения: 5
Зарегистрирован: Ср, 26/03/2008 16:00
Имя Фамилия: Дмитрий Штивель
Откуда: ТопСофт
Контактная информация:

Сообщение Maxxi »

:idea: лучше сделать 10 запросов по 30 тысяч записей, чем 30 тысяч запросо по 10 записей.
а для ограничения по датам используется один и тот же индекс (точнее - сегмент индекса), но неравенство можно использовать только для одного сегмента в индексе и только последним из ограничений на данный индекс.
Ответить