Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
遇到一个问题,我有一个复杂的 sql 查询,偶尔挂起并且不在 MS SQL 上执行。但是,当我对查询中涉及的表运行更新统计信息时,查询会正常执行。
关于原因的任何想法或指示?
谢谢!
SQL Server 创建一个“执行计划”,它使用统计信息来确定过滤数据/减少对数据库表的访问的最佳顺序。
这个执行计划存储在数据库缓存中,只要数据库在线就可以重复使用;不会重建统计信息,也不会修改查询。
更新索引时,也会更新统计信息。
因此,为您的查询存储的执行计划不再是最佳的,因此将不再使用。
我希望 SQL Server 在重建索引之前也会关闭表的未使用锁和事务。这是一个未记录的功能。