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

无法理解,为什么下面两个查询语句的查询计划差别这么大
use   northwind
go
select   *   from   orders   where   orderdate= '20060307 '
select   *   from   orders   where   orderdate= '20060307 '   or   orderdate   is   null
当查看这两条语句的查询计划时,发现它们差别很大,不知为什么?谁能解释一下,谢谢.

------解决方案--------------------
你表里很多NULL的值,用select * from orders where isnull(orderdate, ' ')= '20060307 '
就一樣了
------解决方案--------------------
use northwind
go
select * from orders where orderdate= '20060307 '
select * from orders where orderdate= '20060307 ' or orderdate is null

测试了一下,速度一样,都是0秒.

select * from orders where orderdate= '20060307 ' or orderdate is null
顶多加个条件,应该不会有多大影响.
------解决方案--------------------
查询成本是50%对50%,效率一样。
------解决方案--------------------
是很奇怪。
------解决方案--------------------
持续关注中,一楼回帖说的不明白,语法有错误....isnull,可以那么打么...