使用微秒时在SQL Server中查询速度慢

时间:2015-04-14 16:09:24

标签: sql-server sql-server-2008

如果我运行一个过滤日期的查询,如果我运行完全相同的查询两次,第一次使用my_date_field ='2015-01-01 00:00:00',第二次使用my_date_field ='2015-01 -01 00:00:00.000',第一个(没有微秒)运行得更快。这是正常的吗?我正在使用SQL Server 2008 R2。

更多背景知识,当我在SSMS中运行查询时,执行计划是相同的。我甚至不确定那里是否会有任何缓慢。我看到使用本机SQL Server驱动程序的PHP应用程序的速度很慢。我注意到这种情况很慢,因为有一个循环不止一次运行一个查询(是的,我知道,如果可能的话,尽量避免,但这里很难避免),你得到的记录越多,你就越注意到它的缓慢。有100条记录,该过程在没有微秒的情况下快速运行,并且超过40秒。

更新

感谢您的评论让我深入挖掘。更快地改变微秒事,但这只是巧合。经过大量调试后,我发现绝对查询方式的任何变化都会导致查询速度加快。就像在,我可以在某处添加一个空格或删除一个回车,它很快。所以我的猜测是,有一些有缺陷的执行计划以某种方式缓存。只有让我感到困惑的是查询参数是绑定的,所以虽然我可以看到更改查询将如何解决问题,但我很惊讶更改该日期的数据param修复了它。也许我错了。问题是,如果它缓存数据的执行计划,我如何让它将执行计划更新为有意义的事情?

1 个答案:

答案 0 :(得分:0)

事实证明,我必须做的就是运行sp_updatestats并且性能得到了相当大的提升。