Похоже на ситуацию, похожую на , о чем здесь просят , но я не уверен, что его данные такие же, как у меня.
По сути, у меня есть реляционная таблица, мы назовем ее Пользователь:
User
-----------
int Id
varchar<100> Name
int AddressId
varchar<max> Description
и имеет следующие показатели:
PK_User_Id - очевидно, первичный ключ.
IX_User_AddressId - включает только AddressId.
Когда я запускаю следующий запрос:
select Id, Name, AddressId, Description from User where AddressId > 200
План выполнения показывает, что сканирование было выполнено и использовался PK_User_Id.
Если я выполню этот запрос:
select AddressId from User where AddressId > 200
План выполнения показывает, что сканирование было выполнено и использовался IX_User_AddressId.
если я включу все столбцы в индекс IX_User_AddressId, тогда мой исходный запрос будет использовать правильный индекс, но все равно кажется неправильным, что мне придется это делать.
Итак, мой вопрос по SQL noob таков: что в мире нужно сделать, чтобы мои запросы использовали самый быстрый индекс? Будьте очень конкретны, потому что я должен быть отсталым, так как не могу понять это.