oracle sql语句中 先执行where还是order by

如题所述

从感觉上来说,是先执行WHERE查询符合条件的结果集,再执行ORDER BY,把查询出来的结果集进行排序。

此问题设计到RDBMS内部实现及其查询优化的问题,你执行一条SQL语句时,RDBMS的SQL解析器会生成相应的执行树,按照执行树的顺序对底层存储的数据操作,而后返回处理结果。这里先执行哪一个子句、后执行哪一个子句是有SQL解析器决定的,SQL解析器会给出一条它认为最优的执行树。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-23
先WHERE,过滤出数据,形成结果集;
ORDER BY是已经有了结果集,再作排序追问

但是我在实际的操作环境下根据结果反映出来的是先执行的order by,这是为什么呢

追答

不是。
*如果ORDER BY的字段正好有index,在此过程中会直接使用,因此最终不再执行ORDER BY(隐含着已经排序,这是一种DB Engine自己的优化).
* 如果没有对应的索引,那么就是上述情况(最后作排序)

你可以举例来看看,如何反映出“ORDER BY先执行”

相似回答