Hello, Dmitry! You wrote on Wed, 21 Jun 2006 14:22:19 +0400: DY> "Yuri Grabar" <[EMAIL PROTECTED]> wrote: > > where DOC_DATE between ?DF and DY> ?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
DY> С точки зрения стоимости, выигрывает DOCUMENT_ID. Эээ... Разве не чем меньше - тем лучше? Нелогично как-то... Там вариантов значений-то всего 30 штук. Плохой индекс, но он от внешнего ключа. ??>> Количество индексных чтений из таблицы порядка 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 не используется вообще. DY> Даже так: DY> where DOC_DATE between ?DF and ?DT DY> and FROM_ID = ?FROM_ID DY> and DOCUMENT_ID+0 = 2 DY> ? Так берет по FROM_ID и все. Только если явно запретить использовать индексы и по FROM_ID и по DOCUMENT_ID возмет индекс по DOC_DATE. -- With best regards, Yuri Grabar. --~--~---------~--~----~------------~-------~--~----~ -~----------~----~----~----~------~----~------~--~---

