where 子句的执行顺序(sever 2005)

where 子句的执行顺序


发布:dxy 字体:[ 增加  减小] 类型:转载
貌似在2005之前的版本中,where子句的顺序是从前往后的。但是又貌似在2005的版本中进行了优化,所有的顺序都被统一成了以过滤能力进行排序的语句。

看代码:

复制代码代码如下:

set statistics io on 
set statistics time on 
go 
set statistics profile on 
go 

use pubs 
select * from authors 
where (au_fname like 'S%' or au_fname like 'a%') 
and (state like 'CA' or state like 'UT') 
and (cast(zip as int) > 90000) 

select * from authors 
where (au_fname like 'S%' or au_fname like 'a%') 
and (cast(zip as int) > 90000) 
and (state like 'CA' or state like 'UT') 

select * from authors 
where (cast(zip as int) > 90000) 
and (au_fname like 'S%' or au_fname like 'a%') 
and (state like 'CA' or state like 'UT') 

目的:想验证where语句的各个条件的查询顺序 
环境:SQLServer 2005Express版本 
步骤:显示查询计划 
结果:无一例外,都被统一成了这样的代码 
复制代码代码如下:

|--Clustered Index Scan(OBJECT:([pubs].[dbo].[authors].[UPKCL_auidind]), WHERE:(CONVERT(int,[pubs].[dbo].[authors].[zip],0)>(90000) AND ([pubs].[dbo].[authors].[au_fname] like 'S%' OR [pubs].[dbo].[authors].[au_fname] like 'a%') AND ([pubs].[dbo].[authors].[state] like 'CA' OR [pubs].[dbo].[authors].[state] like 'UT')))

结论:貌似在2005之前的版本中,where子句的顺序是从前往后的。但是又貌似在2005的版本中进行了优化,所有的顺序都被统一成了以过滤能力进行排序的语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值