如何在 SSMS 的“执行计划”选项卡中复制和粘贴“缺失索引”?

Edm*_*und 3 sql-server ssms

尽管盲目创建建议的缺失索引不太理想,但有没有办法从 SQL Server Management Studio 的“执行计划”选项卡中复制和粘贴建议的缺失索引?

鼠标悬停在它上面时,您会得到一个工具提示,但似乎没有右键单击菜单复制它们。多年来,我只是输入了我需要的任何内容,但很好奇是否可以从选项卡中轻松获取基本表格。

使用 SSMS 2017

小智 9

您可以右键单击显示建议索引的绿色文本,选择“缺少索引详细信息”,这将使用索引创建脚本在 SSMS 中打开一个新选项卡。


Eri*_*ing 7

您可以使用右键单击功能,但它是有限的。不仅仅是因为,就像你提到的,缺失的索引请求有点蹩脚,还因为它只会向你展示一个,而且它表明你可能不是最好的。

拿这个查询:

SELECT COUNT(*) AS records
FROM   dbo.Votes AS v
JOIN   dbo.Comments AS c
ON v.PostId = c.PostId
WHERE  c.Score > 1
AND    v.CreationDate >= '2008-01-01';
Run Code Online (Sandbox Code Playgroud)

当我运行它并查看查询计划时,会列出一个缺失的索引请求,估计影响约为 16%。

坚果

但是,如果我进入 XML,还有另一个估计影响更大的请求:

坚果

如果您想查看计划中所有缺失的索引请求,则需要在 SSMS 之外进行。

免费工具,如SentryOne Plan Explorer和我贡献的开源脚本sp_BlitzCache将列出 XML 中所有缺失的索引请求。

在 sp_BlitzCache 中,缺失的索引 XML 列是可点击的:

EXEC dbo.sp_BlitzCache @DatabaseName = 'StackOverflow2010'

坚果

并会显示如下信息:

坚果

所以你可能不想依赖 SSMS 和右键单击。它可能对你隐藏了很多信息。