「実際の実行計画を含める」でクエリを実行すると、欠落しているインデックスも計画によって提案されます。インデックスの詳細は、XMLのMissingIndexes
タグ内にあります。プランに複数のインデックスの提案が含まれている状況はありますか?別のSQLクエリを試しましたが、2つ以上の欠落したインデックスを生成するクエリを思い付くことができませんでした。
SQL Serverのクエリオプティマイザーは、個々のクエリに対して複数の欠落しているインデックスを提案できます。ただし、実行計画を視覚的に表示するSQL Server Management Studio(SSMS)の部分には、1つの欠落しているインデックスの提案しか表示されません。バグのようです。ただし、これらの複数のインデックスの候補は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