我遇到了管理相当多数据的即席查询的问题。执行查询后,状态立即进入暂停状态。它将保持暂停约25分钟,然后完成执行。
我有一个带有SQL2K的镜像环境,并且在大约2分钟内执行相同的查询,并且永远不会进入暂停状态。
@@ version = Microsoft SQL Server 2005 - 9.00.3068.00(Intel IA-64)2008年2月26日21:28:22版权所有(c)1988-2005 Microsoft Corporation企业版(64位)在Windows NT 5.2(Build 3790:Service Pack 2)上
答案 0 :(得分:1)
也许统计数据已过期且需要更新。 更新它们,但最好同时重建索引。
或者,你没有。统计信息是否设置为自动创建和更新? 我见过他们被关闭的情况,因为有人不明白他们的目的或更新的发生。
注意:统计数据的采样率基于最后的统计数据更新。因此,如果您上次采样100%,可能需要一些时间。
运行查询两次会发生什么?第二次更快吗?
答案 1 :(得分:0)
很难从有限的信息中得知,但我很想知道在查询运行时从服务器的性能角度发生了什么。您可以使用Perfmon捕获性能指标,我在这里有一个关于它的教程:
http://www.brentozar.com/perfmon
当查询正在运行时,每个计数器的统计信息是什么样的?如果您按照该文章中的描述捕获统计信息,您可以通过brento@brentozar.com向我发送电子邮件给我,我会看看他们看看发生了什么。
另一个有用的是查询的执行计划。进入SQL Server Management Studio,将查询放入,然后单击“查询”,“显示估计执行计划”。右键单击计划中的任意位置并将其另存为文件,然后其他人可以查看查询的外观。
然后,理想情况下,单击“查询”,“包括实际执行计划”,运行查询,然后转到“执行计划”选项卡。保存那个。如果您发布这两个计划(或通过电子邮件发送给我),您将获得有关正在发生的事情的更好答案。