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

oracle不明确的索引等级

发布时间:2021-01-20 18:45:37 所属栏目:站长百科 来源:网络整理
导读:当ORACLE无法判断索引的等级高低差别,优化器将只使用一个索引,它就是在WHERE子句中被列在最前面的. ?? ??举例: ???? DEPTNO上有一个非唯一性索引,EMP_CAT也有一个非唯一性索引. ???? ???? SELECT ENAME ???? FROM EMP ???? WHERE DEPTNO 20 ???? AND EMP_CAT

当ORACLE无法判断索引的等级高低差别,优化器将只使用一个索引,它就是在WHERE子句中被列在最前面的.

?? ??举例:

???? DEPTNO上有一个非唯一性索引,EMP_CAT也有一个非唯一性索引.

????

???? SELECT ENAME

???? FROM EMP

???? WHERE DEPTNO > 20

???? AND EMP_CAT > ‘A’;

???? 这里,ORACLE只用到了DEPT_NO索引. 执行路径如下:

????

???? TABLE ACCESS BY ROWID ON EMP

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

译者按:

我们来试一下以下这种情况:

SQL> select index_name,uniqueness from user_indexes where table_name = ‘EMP‘;

INDEX_NAME???????????????????? UNIQUENES

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

EMPNO????????????????????????? UNIQUE

EMPTYPE??????????????????????? NONUNIQUE

SQL> select * from emp where empno >= 2 and emp_type = ‘A‘ ;

no rows selected

Execution Plan

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

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

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

?? 2??? 1? ???INDEX (RANGE SCAN) OF ‘EMPTYPE‘ (NON-UNIQUE)

虽然EMPNO是唯一性索引,但是由于它所做的是范围比较,等级要比非唯一性索引的等式比较低!

(编辑:核心网)

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

    热点阅读