日期:2014-05-18  浏览次数:20639 次

关于datediff的性能问题~~~~~
有个datetime类型的字段名为updatetime,值格式为 "2007-9-6   10:02:00 "
我想查询2009-9-1   10:02:00至2009-9-6   10:02:00之间的记录时,用以下两个语句哪个性能更好点?我发现都可以做到同样的效果,而且在查询分析器里看到执行所用的时间完全是一样的:
--用datediff
select   *   from   test_tb   where   datediff(ss,2009-9-1   10:02:00,updatetime)> 0   and   datediff(ss,2009-9-6   10:02:00,updatetime) <0

--直接用> 和 <符号
select   *   from   test_tb   where   updatetime> '2009-9-1   10:02:00 '   and   updatetime < '2009-9-6   10:02:00 '

两种方式哪种效率更高呢???

------解决方案--------------------
后面一个.
------解决方案--------------------
第二种,不过最好把> 改为> = , <改为 <=
------解决方案--------------------
第二个要效率要高一些,因为第一个用了函数。
------解决方案--------------------
个人认为第二个好。
如果你在updatetime上面建立了索引,第二个可以用到索引,
而第一个对列updatetime进行了列运行,会对整个表进行扫描,用不到索引。