3

行,

我不知道我是不是疯了,但是估计的执行计划没有用来向您展示您需要哪些索引来提高您的性能?我在以前的工作中习惯了这一点,但现在看来我必须使用调优顾问。我不介意调优顾问,但我之前的做法是如此简单!

谢谢

4

1 回答 1

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 这样的错误(它在多个批次中重复相同的建议,即使批次没有提到相同的表),并生成实际的执行计划,而不会将所有结果通过网络拉到客户端 - 它只是丢弃它们(因此网络和数据开销不会影响计划分析)。

于 2012-05-24T18:02:34.023 回答