Answers:
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;
高温超导