2010-03-15 2 views
2

Я провел очень простой запрос к одной из нашей таблицы, и я заметил, что процессор запросов план выполнения рекомендаций, которые мы создаем индекс по столбцуПочему Sql Server рекомендует создавать индекс, когда он уже существует?

Этот запрос

SELECT SUM(DATALENGTH(Data)) 
FROM Item 
WHERE Namespace = 'http://some_url/some_namespace/' 

После запуска, я получить следующее сообщение

// 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]) 

Моя проблема заключается в том, что у меня уже есть такой индекс по этому столбцу:

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] 

Почему Sql Server рекомендует мне создать такой индекс, если он уже существует?

ответ

0

колонке Index и порядок сортировки сделать разницу ...

Предыдущая SO 1 и SO 2

Однако, для чего-то это просто попытка добавления INCLUDE clause, чтобы сделать его покрытия.

CREATE NONCLUSTERED INDEX [IX_ItemNamespace] ON [dbo].[Item] ([Namespace]) INCLUDE ([Data]) 
+0

Ничего, я не буду этого делать в столбце данных, но это дает мне представление о некоторых других местах, где это может быть полезно. –

Смежные вопросы