Приветствую
Есть запрос (выбирает имя документа, номера его, с учётом типов документа)

select F.File_Id, F.Name, FP.NumDoc
from Files F inner join Files_Publisher FP on F.File_Id = FP.File_Id
inner join Files_Type_Id FTI on F.File_Id = FTI.File_Id
where ((FTI.Files_Type between 100000 and 199999)
or (FTI.Files_Type between 300000 and 399999))

При этом строится план (Имя индекса = IX_ИмяТаблицы_ИмяПоля)
PLAN JOIN (F NATURAL,FP INDEX (IX_FILES_PUBLISHER_file_id),FTI INDEX
(IX_FILES_TYPE_ID_file_id,IX_FILES_TYPE_ID_files_type,IX_FILES_TYPE_ID_files
_type))
Полная выборка занимает 49сек
Прописываю план
PLAN JOIN (F NATURAL,FP INDEX (IX_FILES_PUBLISHER_file_id),FTI INDEX
(IX_FILES_TYPE_ID_file_id))

Полная выборка занимает 2сек
Пока что в условиях прописал FTI.Files_Type + 1. Но хотелось бы услышать
почему сервак так начинает мучаться? Может вообще удалить ненужные индексы?

ЗЫ Версия сервера 1.5.3.4870
Статистика по индексам
IX_FILES_PUBLISHER_file_id = 0,000034095945011
IX_FILES_TYPE_ID_file_id = 0,000034061104088
IX_FILES_TYPE_ID_files_type = 0,011494252830744

-- 
-- Всего хорошего. Дмитрий Студинский --
ICQ 175465366


Ответить