好的,
我不知道我是不是疯了,但估计的执行计划不是用来告诉你需要哪些索引来提高你的性能吗?我以前的工作习惯于这样做,但现在看来我必须使用调整顾问。我不介意调整顾问,但我以前做的方式非常简单!
谢谢
最佳答案
在 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 这样的错误(它在多个批处理中重复相同的建议,即使批处理没有提到相同的表),并生成实际的执行计划,没有通过网络将所有结果拉到客户端 - 它只是丢弃它们(因此网络和数据开销不会影响计划分析).
关于sql-server - 估计的执行计划显示所需的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742849/