日期:2014-05-18 浏览次数:20715 次
select * from 表1 inner join 表2 on 表1.字段=表2.字段 where 表2.字段='某个值' --请问以上语句中是先where 这里的条件还是先on里的条件??
SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。
另外:一个查询语句各个部分的执行顺序:
--8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
--(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>
--(10) ORDER BY <order_by_list>
------解决方案--------------------
on 条件一共11个顺序步骤
------解决方案--------------------
对于内联
将省略步骤3(添加外步行)
on 筛选器
与
where筛选器相继被应用
进过优化的执行计划应该没有区别