估计执行计划显示所需的索引?

时间:2012-05-24 17:58:24

标签: sql-server

确定,

我不知道我是否会发疯,但是估计的执行计划是否用于向您展示您需要哪些指数来改善您的表现?在我以前的工作中我习惯了这个,但现在看来我必须使用调优顾问。我不介意调优顾问,但我以前做的方式很简单!

由于

1 个答案:

答案 0 :(得分:7)

在SSMS 2008和SSMS 2012中,看到这对于估计和实际计划都很好。

这是一个快速示例,显示估计的和实际的执行计划都会显示缺失的索引:

USE tempdb;
GO

CREATE TABLE dbo.smorg(blamp INT);
GO

INSERT dbo.smorg(blamp) SELECT n FROM
(
  SELECT ROW_NUMBER() OVER (ORDER BY c1.object_id)
  FROM sys.all_objects AS c1, sys.all_objects AS c2

) AS x(n);
GO

现在突出显示并选择估计执行计划,或打开实际执行计划并点击执行:

SELECT blamp FROM dbo.smorg WHERE blamp BETWEEN 100 AND 105;

您应该会看到缺少索引建议。你会看到它在这里代表:

SELECT * 
    FROM sys.dm_db_missing_index_details 
    WHERE [object_id] = OBJECT_ID('dbo.smorg');

您可以在此处阅读有关DMV的更多信息:

http://msdn.microsoft.com/en-us/library/ms345434.aspx

此外,您应该调查SQL Sentry Plan Explorer(免责声明:我为SQL Sentry工作)。这是一个免费工具,显示估计计划的缺失索引(如果它们在SQL Server提供的XML中),没有像SSMS这样的错误(它在多个批次中重复相同的建议,甚至是不批处理的批次)提及相同的表格),并生成实际的执行计划,无需将所有结果通过网络提取到客户端 - 它只是丢弃它们(因此网络和数据开销不会影响到计划分析)。