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

oracle用WHERE替代ORDER BY

发布时间:2021-01-20 03:55:32 所属栏目:站长百科 来源:网络整理
导读:ORDER BY 子句只在两种严酷的前提下行使索引. ORDER BY中全部的列必需包括在沟通的索引中并保持在索引中的分列次序. ORDER BY中全部的列必需界说为非空. WHERE子句行使的索引和ORDER BY子句中所行使的索引不能并列. 譬喻: ????? 表DEPT包括以下列: ??????? D

ORDER BY 子句只在两种严酷的前提下行使索引.

ORDER BY中全部的列必需包括在沟通的索引中并保持在索引中的分列次序.

ORDER BY中全部的列必需界说为非空.

WHERE子句行使的索引和ORDER BY子句中所行使的索引不能并列.

譬喻:

????? 表DEPT包括以下列:

??????? DEPT_CODE??? PK??? NOT NULL

??????? DEPT_DESC?????????? NOT NULL

??????? DEPT_TYPE?????????? NULL

???

?????? 非独一性的索引(DEPT_TYPE)

???? 低效: (索引不被行使)

??????????? SELECT DEPT_CODE

??????????? FROM DEPT

??????????? ORDER BY DEPT_TYPE

? ?????EXPLAIN PLAN:

??????????? SORT ORDER BY

????????????????? TABLE ACCESS FULL

???? 高效: (行使索引)

?????????? SELECT DEPT_CODE

?????????? FROM DEPT

??????? WHERE DEPT_TYPE > 0

??? EXPLAIN PLAN:

????? TABLE ACCESS BY ROWID ON EMP

???????????? INDEX RANGE SCAN ON DEPT_IDX

?

????? ORDER BY 也能行使索引! 这简直是个轻易被忽视的常识点. 我们来验证一下:

SQL>? select * from emp order by empno;

Execution Plan

----------------------------------------------------------

?? 0????? SELECT STATEMENT Optimizer=CHOOSE

?? 1??? 0?? TABLE ACCESS (BY INDEX ROWID) OF ‘EMP‘

?? 2??? 1???? INDEX (FULL SCAN) OF ‘EMPNO‘ (UNIQUE)

(编辑:湖南网)

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

    热点阅读