where 子句的执行顺序

 更新时间:2009年04月05日 00:35:02   作者:  
貌似在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的版本中进行了优化,所有的顺序都被统一成了以过滤能力进行排序的语句。

相关文章

  • SQL SERVER的字段类型说明

    SQL SERVER的字段类型说明

    以下为SQL SERVER 7.0以上版本的字段类型说明。SQL SERVER6.5的字段类型说明请参考
    2008-04-04
  • 主键与聚集索引

    主键与聚集索引

    表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。在创建或修改表时,您可以通过定义 PRIMARY KEY 约束来创建主键。
    2009-07-07
  • Redis和Memcache的区别总结

    Redis和Memcache的区别总结

    这篇文章主要介绍了Redis和Memcache的区别,用三个总结来说明Redis和Memcache的区别,需要的朋友可以参考下
    2014-05-05
  • mycat在windows环境下的安装和启动

    mycat在windows环境下的安装和启动

    这篇文章主要介绍了mycat在windows环境下的安装和启动过程,需要的朋友参考下吧
    2018-03-03
  • SQL语句优化之JOIN和LEFT JOIN 和 RIGHT JOIN语句的优化

    SQL语句优化之JOIN和LEFT JOIN 和 RIGHT JOIN语句的优化

    在数据库的应用中,我们经常需要对数据库进行多表查询,然而当数据量非常大时多表查询会对执行效率产生非常大的影响,因此我们在使用JOIN和LEFT JOIN 和 RIGHT JOIN语句时要特别注意
    2018-03-03
  • 数据库连接池Druid与Hikari对比详解

    数据库连接池Druid与Hikari对比详解

    这篇文章主要为大家介绍了数据库连接池Druid与Hikari对比详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • MYSQL 导入数据的几种不同

    MYSQL 导入数据的几种不同

    下面是导入数据的不同格式分析。
    2009-04-04
  • 数据库之SQL注入原理以及过程的简单介绍

    数据库之SQL注入原理以及过程的简单介绍

    这篇文章主要介绍了数据库之SQL注入原理以及过程的简单介绍,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • OceanBase自动生成回滚SQL的全过程(数据库变更时)

    OceanBase自动生成回滚SQL的全过程(数据库变更时)

    在开发中,数据的变更与维护工作一般较频繁,当我们执行数据库的DML操作时,必须谨慎考虑变更对数据可能产生的后果,以及变更是否能够顺利执行,所以本文给大家介绍了数据库变更时,OceanBase如何自动生成回滚 SQL,需要的朋友可以参考下
    2024-04-04
  • navicat怎么卸载,navicat彻底卸载干净教程

    navicat怎么卸载,navicat彻底卸载干净教程

    这篇文章主要介绍了navicat怎么卸载?navicat彻底卸载干净教程。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论