oracle不明确的索引等级
当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是唯一性索引,但是由于它所做的是范围比较, 等级要比非唯一性索引的等式比较低!
最新文章
- UNITY自带的3D object没有三角形?
- Leetcode--Merge Two Sorted Lists
- hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online
- C++实现网格水印之调试笔记(五)—— 提取出错
- selenium 自动化测试面试题及答案
- Pots
- [HNOI 2013] 旅行 (数学)
- Delphi语言最好的JSON代码库 mORMot学习笔记1
- hh monitor
- [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱
- Python——built-in module Help: math
- Codeforces Round #436 C. Bus
- 洛谷P2414 阿狸的打字机
- SQL服务器模式
- 张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用
- 更改Apache默认起始(索引)页面:DirectoryIndex
- synchronized同步代码块锁释放
- BZOJ3996 TJOI2015线性代数
- Java和.net对比分析
- rest-framework框架 -- 认证权限流程源码