Получение запроса для поиска по индексу (а не для сканирования)
При выполнении следующего запроса (SQL Server 2000) план выполнения показывает, что он использовал поиск по индексу, а Profiler показывает, что он выполняет 71 чтение с продолжительностью 0.
select top 1 id from table where name = '0010000546163' order by id desc
Сравните это со следующим с использованием сканирования индекса с 8500 чтениями и продолжительностью около секунды.
declare @p varchar(20)
select @p = '0010000546163'
select top 1 id from table where name = @p order by id desc
Почему план выполнения отличается? Есть ли способ изменить второй метод поиска?
Спасибо
EDIT
Стол выглядит как
CREATE TABLE [table] (
[Id] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [varchar] (13) COLLATE Latin1_General_CI_AS NOT NULL)
Идентификатор является первичным кластерным ключом Существует неуникальный индекс по имени и уникальный составной индекс по идентификатору / имени Есть и другие столбцы - опущу их для краткости