Я обнаружил, что если я запрашиваю таблицу с оператором меньше или больше, индексы сервера sql не будут работать должным образом.
Допустим, у меня есть простая таблица (TestTable), содержащая только 2 столбца, например:
Column Name, column type, primary Key, index
iID, int, yes, cluster index
iCount, int, no, non-cluster index
name, nvarchar(255), no, no index
Теперь я запрашиваю таблицу следующим образом:
ВЫБРАТЬ * ИЗ TestTable, ГДЕ iCount = 10.
Очень хорошо, сервер Sql будет использовать некластерный индекс для столбца iCount для получения результата.
Однако, если я сделаю запрос к таблице следующим образом:
ВЫБРАТЬ * ИЗ TestTable, ГДЕ iCount <10, </p>
Сервер Sql выполнит сканирование индекса по индексу кластера для iID для получения результата.
Мне интересно, почему сервер sql не может использовать правильный индекс, когда я использую в запросе оператор меньше или больше оператора?