"Yuri Grabar" <[EMAIL PROTECTED]> wrote:
>
> where DOC_DATE between ?DF and ?DT
>    and FROM_ID = ?FROM_ID
>    and DOCUMENT_ID = 2
>
> FROM_ID и DOCUMENT_ID - внешние ключи, по полю DOC_DATE есть индекс.
> Селективности по индексам:
>
> по DOC_DATE - 0,00048169
> по FROM_ID - 0,00017614
> по DOCUMENT_ID - 0,03333333

С точки зрения стоимости, выигрывает DOCUMENT_ID.

> Количество индексных чтений из таблицы порядка 20 тыс с соответствующими
> тормозами... Заставить оптимизатор использовать индекс по DOC_DATE удалось
> только при записи запроса в таком виде:
>
> select count(*)
> from DOCS
> where DOC_DATE between ?DF and ?DT
>    and FROM_ID+0 = ?FROM_ID
>    and DOCUMENT_ID+0 = 2
>
> в любом другом варианте индекс по DOC_DATE не используется вообще.

Даже так:

where DOC_DATE between ?DF and ?DT
    and FROM_ID = ?FROM_ID
    and DOCUMENT_ID+0 = 2

?


--
Дмитрий Еманов




--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить