回答:
SQL Serverのクエリオプティマイザーは、個々のクエリに対して複数の欠落したインデックスの提案を作成できます。ただし、実行計画を視覚的に表示するSQL Server Management Studio(SSMS)の一部には、単一の欠落したインデックスの提案のみが表示されます。バグのように見えます。ただし、これらの複数のインデックスの提案は、SSMSに表示されます。たとえば、最初の演算子のプロパティ(例:)をSELECT
押しF4ます。
既に述べたように、複数の提案がプランXMLまたはSQL Sentry Plan Explorerなどのサードパーティツールに表示されます。欠落しているインデックスDMV(例sys.dm_db_missing_index_details)にも複数の提案が表示されます
この簡単なクエリの結果、複数の提案がありました。
USE tempdb
GO
SET NOCOUNT ON
GO
IF OBJECT_ID('dbo.t1') IS NOT NULL DROP TABLE dbo.t1
CREATE TABLE dbo.t1
(
rowId INT IDENTITY
)
GO
IF OBJECT_ID('dbo.t2') IS NOT NULL DROP TABLE dbo.t2
CREATE TABLE dbo.t2
(
rowId INT IDENTITY
)
GO
INSERT INTO dbo.t1 DEFAULT VALUES
GO 100000
INSERT INTO dbo.t2 DEFAULT VALUES
GO 100000
SELECT *
FROM dbo.t1 t1
INNER JOIN dbo.t2 t2 ON t1.rowId = t2.rowId
WHERE t2.rowId = 999;
HTH