加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle SQL子句评估顺序

发布时间:2021-04-01 10:23:28 所属栏目:站长百科 来源:网络整理
导读:在Oracle中,首先评估哪些子句类型?如果我有以下(假装….代表有效的表达和关系名称),评估的顺序是什么? SELECT ...FROM .....WHERE ........GROUP BY ...........HAVING .............ORDER BY ................ 我的印象是最后评估了SELECT子句,但除此之外

在Oracle中,首先评估哪些子句类型?如果我有以下(假装….代表有效的表达和关系名称),评估的顺序是什么?

SELECT   ...
FROM     .....
WHERE    ........
GROUP BY ...........
HAVING   .............
ORDER BY ................

我的印象是最后评估了SELECT子句,但除此之外我一无所知.

解决方法

无法始终最后评估选择列表,因为ORDER BY可以使用在选择列表中定义的别名,因此必须在之后执行它们.例如:

SELECT foo+bar foobar FROM table1 ORDER BY foobar

我会说,一般来说,执行的顺序可能是这样的:

>来自
>在哪里
> GROUP BY
>选择
> HAVING
>订购

可以交换GROUP BY和WHERE子句而不更改结果,HAVING和ORDER BY也可以.

实际上事情更复杂,因为数据库可以根据不同的执行计划对执行重新排序.只要结果保持不变,它的执行顺序无关紧要.

另请注意,如果为ORDER BY子句选择了索引,则从磁盘读取行时,行可能已按正确顺序排列.在这种情况下,ORDER BY子句根本没有真正执行.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读