У нас есть существующая структура таблицы, как показано ниже
Имя таблицы: Поставщик #
Столбцы:
Provid
EntityId
SpecialityCode
ProvType
FedId
FullName
Status
В этой таблице ProvId
является первичным ключом,Таким образом, у нас есть кластеризованный индекс на ProvId
.
Помимо этого у нас есть два составных некластеризованных индекса, как показано ниже
CREATE NONCLUSTERED INDEX [Provider0]
ON [dbo].[provider] ([fedid] ASC, [provid] ASC, [entityid] ASC, [fullname] ASC, [status] ASC)
CREATE NONCLUSTERED INDEX [XIE3Provider]
ON [dbo].[provider] ([fedid] ASC, [entityid] ASC, [provtype] ASC, [fullname] ASC, [provid] ASC, )
Запрос 1:
SELECT provid
FROM provider
WHERE FedId = '123'
Для запроса 1 SQL Server использует индекс XIE3Provider
для операции поиска.
Запрос 2:
SELECT provid, status
FROM provider
WHERE FedId = '123'
Для запроса 2 SQL Server использует индекс Provider0
для операции поиска.
Не могли бы вы предоставить более подробную информацию о том, как SQL Server переключает выбор индекса для этого случая?