Hello, Дмитрий! Дмитрий Студинский wrote:
> 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)) оптимизатор из-за OR взял IX_FILES_TYPE_ID_files_type два раза, должен выбрать множества ключей и слить их по OR. Если > Прописываю план > 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 > Статистика по индексам это если ты недавно set statistics index делал. > IX_FILES_TYPE_ID_files_type = 0,011494252830744 не фонтан. IBAnalyst тебе лучше скажет, нормальный это индекс или нет. В целом нет, особенно если в between много ключей попадает, да еще и по or. Так что ты +0 правильно сделал. -- Dmitri Kuzmenko, www.ibase.ru, (495) 953-13-34

