1

有谁知道如何减少您在 MS SQL Server 中的 SQL 查询的执行计划中看到的“执行次数”?

我们有一个查询在一台生产服务器上运行缓慢(其他都很好)。在检查执行计划时,我们看到第一步是聚集索引扫描。在运行良好的服务器上,此扫描执行一次。在运行缓慢的那个上,它被执行 4 次。

我们在这里( http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p2.aspx )读到你应该尝试减少它,但我们找不到任何关于如何做到这一点的提示。

两台服务器都运行相同版本的 Windows (2003) 和 SQL Server (2000)。

任何帮助,将不胜感激。

4

2 回答 2

6

db 模式真的一样吗?如果是这样,请尝试更新统计信息并对索引和表进行碎片整理。

http://msdn.microsoft.com/en-us/library/aa260645(SQL.80).aspx

http://technet.microsoft.com/en-us/library/cc966523.aspx

于 2010-02-02T10:19:47.777 回答
0

对不起,我自己回答这个问题。感谢亚瑟的链接,它们很有用(所以我对你的答案投了赞成票)。我们更新了统计数据,但没有帮助。我们使用 DBCC SHOWCONTIG 检查了碎片整理,但它与其他数据库没有太大区别。

很抱歉没有发布查询 AdaTheDev,但我必须更改所有列和内容(因为它是相当关键的业务内容),我们现在找到了解决方案。

我们注意到该表的记录比其他数据库多得多。我们在正确的列上添加了索引。我们做了一个像这样的连接:

inner join table2 t2 on t1.t1Id = t2.t1Id and t2.someOtherId = @parameter
where t2.aThirdId = @otherParameter

因此,我们为每个 Id 列添加了三个单独的索引,这将其从 30 秒加速到 3-5 秒(尽管我们确实在 t1Id 和 someOtherId 上都有一个索引)。

最后我们也对表进行了清理,因为很多记录都被逻辑删除了,不再需要了。但指数起到了作用。

于 2010-02-02T16:18:11.727 回答