Почему это сканирование индекса, а не поиск индекса?

Вот запрос:

SELECT      top 100 a.LocationId, b.SearchQuery, b.SearchRank
FROM        dbo.Locations a
INNER JOIN  dbo.LocationCache b ON a.LocationId = b.LocationId
WHERE       a.CountryId = 2
AND         a.Type = 7

Индексы местоположения:

PK_Locations:

LocationId

IX_Locations_CountryId_Type:

CountryId, Type

Индексы LocationCache:

PK_LocationCache:

LocationId

IX_LocationCache_LocationId_SearchQuery_SearchRank:

LocationId, SearchQuery, SearchRank

План выполнения:

enter image description here

Итак, он выполняет Index Seek в Locations, используя покрывающий индекс, но почему? он выполняет сканирование индекса в покрывающем индексе LocationCache?

Этот покрывающий индекс имеет LocationId, SearchQuery, SearchRank в индексе (не как «Включенные столбцы»).

Наведите курсор на сканирование индекса. :

enter image description here

Этот запрос должен идти в индексированном представлении, обслуживаемом каталогом FTS SQL Server, потребляемом подключаемым модулем автозаполнения, поэтому он должен быть оптимизирован на 100%.

В настоящий момент указанный выше запрос занимает 3 секунды. Оно должно быть <0.

Есть идеи?

16
задан RPM1984 30 June 2011 в 00:51
поделиться