Поиск по индексу - это когда SQL Server может использовать двоичный поиск для быстрого поиска строки. Строки в индексе сортируются в определенном порядке, и ваш запрос должен указать достаточно информации в предложении WHERE, чтобы SQL Server мог использовать отсортированный индекс.
Сканирование индекса - это когда SQL Server не может использовать порядок сортировки индекса, но все же может использовать сам индекс. Это имеет смысл, если строки таблицы очень большие, но индекс относительно небольшой. SQL Server будет только читать меньший индекс с диска.
В качестве простого примера возьмем таблицу телефонной книги:
id int identity primary key
lastname varchar(50)
phonenumber varchar(15)
Скажите, что есть индекс (фамилия). Тогда этот запрос приведет к поиску индекса :
select * from phonebook where lastname = 'leno'
Этот запрос приведет к сканированию индекса :
select * from phonebook where lastname like '%no'
Аналогия с реальной телефонной книгой в том, что вы не можете искать людей, чье имя заканчивается на «нет». Вы должны просмотреть всю телефонную книгу.