2010-11-11 68 views
1

我正在使用SQL Server 2008,刚刚开始在查询数据库时出现间歇性问题。使用WHERE子句时,间歇性的查询速度慢

至少每天一次,我因为查询速度缓慢而导致很多应用程序超时。这没有特别的时间,有时在早上,有时在下午。每次我开始解决问题时,它都会在几分钟内解决问题。

通常我使用此查询:

SELECT名字从人口统计学WHERE名称IS NOT NULL

,并在<1秒运行。但是,在这些“问题时间”期间,查询需要大约3分钟的时间。一旦查询完成,我可以再次运行它并且工作得很好(几乎是即时)。

而且,上面的查询运行时,我可以用这个:

SELECT名字从人口统计学

,它运行完美。没有延迟。唯一的区别是WHERE条款。那么,我该从哪里开始排除故障?我应该使用哪些工具来查找原因?

在此先感谢。

回答

2

首先要做的是查看查询的执行计划。为此,请在Management Studio中打开查询窗口,然后在查询菜单中选择包括实际执行计划。运行您的查询,然后转到执行计划选项卡并保存计划。

当您看到性能问题时,请重复这些步骤。然后,加载两个执行计划,并比较它们,看看有什么不同。如果有差异,他们可能会指出你在正确的方向找到问题。

+0

感谢有关执行计划的信息。事实证明,当我比较两者时几乎没有什么区别。我会接受这个答案,因为它帮助最大。 – Travis 2010-11-12 17:24:41

+1

如果计划之间没有很大的差异,那么问题很可能是由服务器上的其他进程引起的。您可以尝试通过使用带有“持续时间”列上的筛选器的SQL事件探查器来跟踪这些事件,以便仅返回超过10秒的查询。然后,当问题发生时,查看配置文件数据以查看查询运行缓慢时是否发生了其他事情。 – 2010-11-12 20:21:45

1

看看在故障期间您是否被另一个进程阻塞。