(本文章内容仅在windows10下经测试能够运行,不能保证其他环境下的可靠性)
oracle中索引的概念:在列上创建一个二叉树
oracle中索引的特点:
1、大幅度提高查询效率。
2、影响写入数据的效率。
单列索引的创建和触发条件
单列索引的创建代码如下:
---创建索引 create index idx_ename on emp(ename);
触发条件:查询条件必须包含索引列的原始值,使用单行函数和模糊查询均会影响单列索引的触发
复合索引的创建和触发条件
复合索引的创建代码如下:
---创建复合索引 create index idx_enamejob on emp(ename,job);
触发条件:查询条件必须包含复合索引的优先检索列的原始值
优先检索列:创建索引时()括号中的第一个字段
根据以上索引案例使用查询语句触发索引情况的辨析:
案例1、查询代码如下:
select * from emp where ename = ‘SCOTT‘ and job = ‘xx‘;--触发复合索引
触发复合索引
案例2、查询代码如下:
---当查询条件即是单列索引的原始值又是复合索引的优先检索列的原始值时,只触发单列索引 select * from emp where ename = ‘SCOTT‘;--只触发单列索引
触发单列索引
案例3、查询代码如下:
---查询条件包含复合索引的优先索引列的原始值或单列索引的原始值
--但存在or时,不触发索引
--(若所有或的条件均为复合索引的优先索引列的原始值或单列索引的原始值时,是否触发索引笔者尚不明确) select * from emp where ename = ‘SCOTT‘ or job = ‘xx‘;
不触发索引