缺少多个索引的执行计划


15

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

Answers:


27

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;

高温超导

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.