有谁知道如何减少在MS SQL Server中SQL查询的执行计划中可以看到的“执行次数”?
我们有一个在一个生产服务器上运行缓慢的查询(其他都很好)。检查执行计划时,我们发现其中一个步骤是聚集索引扫描。在运行正常的服务器上,此扫描执行一次。在运行缓慢的那个上,执行4次。
我们在此阅读(http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p2.aspx)您应该尝试减少它,但我们找不到有关如何执行此操作的任何提示。
两台服务器都运行相同版本的Windows(2003)和SQL Server(2000)。
任何帮助都将不胜感激。
答案 0 :(得分:6)
db模式真的一样吗?如果是这样,那么尝试更新统计信息并对索引和表进行碎片整理。
http://msdn.microsoft.com/en-us/library/aa260645(SQL.80).aspx
答案 1 :(得分:0)
抱歉,我自己也在回答这个问题。感谢Arthur的链接,他们很有用(所以我投了你的答案)。我们更新了统计数据,但没有帮助。我们使用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上有一个索引)。
最后我们还对表进行了清理,因为很多记录都被逻辑删除了,不再需要了。但索引做了这个伎俩。