Por que o SQL Server recomenda a criação de um índice quando já existe?
-
20-09-2019 - |
Pergunta
Eu executei uma consulta muito básica contra uma de nossa mesa e notei que o processador de consultas do plano de execução está recomendando que criemos um índice em uma coluna
A consulta é
SELECT SUM(DATALENGTH(Data))
FROM Item
WHERE Namespace = 'http://some_url/some_namespace/'
Depois de correr, recebo a seguinte mensagem
// The Query Processor estimates that implementing the following index could improve the query cost by 96.7211%.
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[Item] ([Namespace])
Meu problema é que eu já tenho esse índice nessa coluna:
CREATE NONCLUSTERED INDEX [IX_ItemNamespace] ON [dbo].[Item]
(
[Namespace] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Por que o SQL Server está me recomendando para criar esse índice quando já existe?
Solução
A coluna de índice e a ordem de classificação fazem a diferença ...
No entanto, para algo tão simples, tente adicionar um Inclua cláusula Para fazer isso cobrindo.
CREATE NONCLUSTERED INDEX [IX_ItemNamespace] ON [dbo].[Item] ([Namespace]) INCLUDE ([Data])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow