SQL 执行顺序和性能优化
来源:互联网 发布:杭州友谦网络 编辑:程序博客网 时间:2024/05/21 16:56
一:查询的逻辑执行顺序
(1) FROM < left_table>
(3) < join_type> JOIN < right_table> (2) ON < join_condition>
(4) WHERE < where_condition>
(5) GROUP BY < group_by_list>
(6) WITH {cube | rollup}
(7) HAVING < having_condition>
(8) SELECT (9) DISTINCT (11) < top_specification> < select_list>
(10) ORDER BY < order_by_list>
标准的SQL 的解析顺序为:
(1).FROM 子句 组装来自不同数据源的数据
(2).WHERE 子句 基于指定的条件对记录进行筛选
(3).GROUP BY 子句 将数据划分为多个分组
(4).使用聚合函数进行计算
(5).使用HAVING子句筛选分组
(6).计算所有的表达式
(7).使用ORDER BY对结果集进行排序
二 执行顺序:
1.FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1
2.ON:对vt1表应用ON筛选器只有满足< join_condition> 为真的行才被插入vt2
3.OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行将行作为外部行添加到vt2 生成t3如果from包含两个以上表则对上一个联结生成的结果表和下一个表重复执行步骤和步骤直接结束
4.WHERE:对vt3应用 WHERE 筛选器只有使< where_condition> 为true的行才被插入vt4
5.GROUP BY:按GROUP BY子句中的列列表对vt4中的行分组生成vt5
6.CUBE|ROLLUP:把超组(supergroups)插入vt6 生成vt6
7.HAVING:对vt6应用HAVING筛选器只有使< having_condition> 为true的组才插入vt7
8.SELECT:处理select列表产生vt8
9.DISTINCT:将重复的行从vt8中去除产生vt9
10.ORDER BY:将vt9的行按order by子句中的列列表排序生成一个游标vc10
11.TOP:从vc10的开始处选择指定数量或比例的行生成vt11 并返回调用者
看到这里,那么用过linqtosql的语法有点相似啊?如果我们我们了解了sqlserver执行顺序,那么我们就接下来进一步养成日常sql好习惯,也就是在实现功能同时有考虑性能的思想,数据库是能进行集合运算的工具,我们应该尽量的利用这个工具,所谓集合运算实际就是批量运算,就是尽量减少在客户端进行大数据量的循环操作,而用SQL语句或者存储过程代替。
- SQL 执行顺序和性能优化
- sql执行顺序及性能优化
- SQL执行顺序及优化
- SQL优化---SQL执行的先后顺序
- sql执行顺序及oracle优化
- Sql 语句优化与执行顺序
- sql语句的执行顺序 以及 优化
- 性能优化和SQL优化
- SQL优化——SQL子句执行顺序和Join的一点总结
- sql的执行原理和执行顺序
- SqlServer性能优化用SQL(四)【执行次数和性能监控】
- 优化SQL执行路径提高报表性能
- ORACLE数据库SQL优化--->如何执行计划的执行顺序
- SQL优化【基础02】 - 执行计划的执行先后顺序
- oracle的sql汇总,性能,sql执行顺序
- [SqlServer] 性能优化实战-join与where条件执行顺序
- 数据库性能优化-1-使用SQL Server Profiler工具和执行计划分析
- sql查询原理和Select执行顺序
- Linux下chkconfig命令详解
- 碰撞事件对应捕捉与处理实例
- 计算机SAP-1 设计与实现(1)
- 开源 免费 java CMS - FreeCMS-功能说明-信息管理
- 给软件开发初学者 c++
- SQL 执行顺序和性能优化
- Python集成开发环境(eclipse+pydev)遇到的问题
- Linux系统目录结构
- 用Java写算法技巧(1)去掉List中的重复对象
- MPMoviePlayerController 获取视频缓冲大小
- Android 中LayoutInflater的使用!
- javascript 评分控件(鼠标滑动)
- iframe的跳转方法
- JAVA虚拟机内存分配原则