Re: like и использование индекса
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.10.05 12:05
Оценка:
Здравствуйте, Щербатов Евгений, Вы писали:

ЩЕ>Я выполняю следующий запрос select top 1 ID where F1 like 'Э%' и этот запрос отрабатывает очень быстро. План запроса указывает, что у меня используется необходимый индекс и ему делается Index Seek. Причем, в таблице все записи поля F1 начинаются с 'Э', поэтому он так быстро и отрабатывает.

Нет, не поэтому.
ЩЕ>Если же я укажу следующий запрос select top 1 ID where F1 like 'э%' — буковка стала маленькой. То он будет выполняться достаточно долго (около 7 секунд). В результате скажет, что таких записей нет и будет прав — их действительно нет. План запроса по-прежнему указывает на Index Seek. Вот собственно вопрос:

ЩЕ>В чем заключается Index Seek и как он работает, если для такого глупого запроса нужно столько времени?

Он работает хорошо. Выполняется очень быстрый спуск по ветке B+дерева, с последующим сканированием диапазона.
ЩЕ>Похоже тут идет тупое сканирование таблицы.
Нет, не похоже. Иначе бы QA так и написал.

Какие аргументы у этих Index Seek? Там вообще довольно много чего написано. В том числе и стоимость и прочая информация. Обычно ее достаточно для того, чтобы понять, в чем отличие между планами двух запросов.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.