3

テーブルの 1 つに対して非常に基本的なクエリを実行したところ、実行プラン クエリ プロセッサが列にインデックスを作成することを推奨していることに気付きました。

クエリは

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 が、そのようなインデックスが既に存在するのに、そのようなインデックスを作成することを推奨しているのはなぜですか?

4

1 に答える 1

0

インデックス列と並べ替え順序が違いを生む...

以前のSO 1SO 2

ただし、この単純なものについては、INCLUDE 句を追加してカバーするようにしてください。

CREATE NONCLUSTERED INDEX [IX_ItemNamespace] ON [dbo].[Item] ([Namespace]) INCLUDE ([Data])
于 2010-03-15T20:07:44.823 に答える