多个缺失索引的执行计划

Gio*_*rgi 15 index sql-server execution-plan

如果您使用“包括实际执行计划”运行查询,该计划还将建议缺少的索引。索引详细信息MissingIndexes位于 XML 中的标记内。是否存在计划包含多个索引建议的情况?我尝试了不同的 sql 查询,但无法提出任何生成两个或多个缺失索引的查询。

wBo*_*Bob 28

SQL Server 中的查询优化器可以为单个查询提供多个缺失索引建议。但是,SQL Server Management Studio (SSMS) 中显示执行计划的部分仅显示一个缺失的索引建议;它看起来像一个错误。然而,这些多索引建议在 SSMS 中是可见的,例如在第一个运算符的属性中(例如SELECT),按F4

在 SSMS 中查看多个缺失的索引建议

正如您还注意到的,在计划 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;
Run Code Online (Sandbox Code Playgroud)

HTH