查询挂起,但如果我更新统计信息,则确定

时间:2012-11-22 16:06:43

标签: sql-server sql-server-2008

有一个问题,我有一个复杂的SQL查询,偶尔挂起,不会在MS SQL上执行。但是,当我对查询中涉及的表运行update statistics时,查询会正常执行。

关于原因的任何想法或指示?

谢谢!

1 个答案:

答案 0 :(得分:0)

SQL Server创建一个“执行计划”,该计划使用统计信息来确定筛选数据/减少对数据库表的访问的最佳顺序。

此执行计划存储在数据库缓存中,只要数据库处于联机状态,就会重新使用;不会重建统计信息,也不会修改查询。

更新索引时,统计信息也会更新。

因此,查询的存储执行计划不再是最佳的,因此将不再使用。

我希望SQL Server在重建索引之前还会关闭表的未使用的锁和事务。这是一个没有文档记录的功能。