手机
当前位置:查字典教程网 >编程开发 >数据库其他 >where 子句的执行顺序
where 子句的执行顺序
摘要:看代码:复制代码代码如下:setstatisticsioonsetstatisticstimeongosetstatisticsprofil...

看代码:

复制代码 代码如下:

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的版本中进行了优化,所有的顺序都被统一成了以过滤能力进行排序的语句。

【where 子句的执行顺序】相关文章:

数据库设计的折衷方法

ADO,OLEDB,ODBC,DAO,RDO的区别说明

连续序号的 sql语句

数据库测试 实用技巧及测试方法

eXtremeDB 6.0正式发布:提高扩展性和分布式查询速度

sql语句中where和having的区别

数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(实例说明)

在PostgreSQL中使用日期类型时一些需要注意的地方

SQL中Having与Where的区别及注意

写出高性能SQL语句的35条方法分析

精品推荐
分类导航