数据库查询语句执行顺序
2016-04-27 00:00
274 查看
大神的总结:
http://www.cnblogs.com/knowledgesea/p/4177830.html
参考:《Microsoft SQL Server 2008技术内幕:T-SQL查询》
查询语句的执行顺序:
1、FROM 子句:执行顺序为从后往前、从右到左。数据量较少的表尽量放在后面。
2、WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE 子句的最右。
3、GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。
4、HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。
HAVING子句必须跟在GROUP BY 后面,不能单独存在!
5、SELECT子句:少用*号,尽量取字段名称。ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间。
6、ORDER BY子句:执行顺序为从左到右排序,消耗资源。
ORDER BY子句出现的位置必须在SELECT中的最后一个子句。
http://www.cnblogs.com/knowledgesea/p/4177830.html
参考:《Microsoft SQL Server 2008技术内幕:T-SQL查询》
查询语句的执行顺序:
1、FROM 子句:执行顺序为从后往前、从右到左。数据量较少的表尽量放在后面。
2、WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE 子句的最右。
3、GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。
4、HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。
HAVING子句必须跟在GROUP BY 后面,不能单独存在!
5、SELECT子句:少用*号,尽量取字段名称。ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间。
6、ORDER BY子句:执行顺序为从左到右排序,消耗资源。
ORDER BY子句出现的位置必须在SELECT中的最后一个子句。
相关文章推荐
- mysql is marked as crashed and should be repaired
- SQL语句重复数据取一条
- mysql left join错误写法
- Oracle11g ORA-00845 错误
- Oracle database 11g 基础组件
- MySQL 命令大全
- Redis的AOF持久化-Redis学习笔记四
- Mysql5.6配置文件详解
- 打开redis服务提示
- SQL Server中常用的快捷键
- mysql连接字符串
- 在OS X 上安装MongoDB
- Mysql cluster初学
- Memcache-Java-Client-Release源码阅读(之四)
- SQL基本操作 - 新增、查看、更新、删除表中数据
- mysql修改表或者数据库的总结
- ORACLE数据库用户管理
- Redis Output-Buffer-Limits
- oracle数据库忘记用户名和密码莫着急
- Redis 和Memcache的区别