2019-03-09
阅读量:
847
Oracle的索引
索引是用于加速数据存取的数据对象,有很多种数据结构的不同实现方式,基本思想就是在表的列上构建一个二叉树。合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。索引大大提高了查询的效率,但是却增加了更新的维护成本,所以不能乱建索引,不能建立过多的索引,对于不经常查询的字段,就不要去建对应的索引。
创建索引之后再pl/sql工具的左边的indexes下刷新即可看见创建的索引
1). 索引的使用原则
- 在大表上建立索引才有意义。
- 在where字句后面或者是在连接条件on上或者过滤条件having后面的字段建立索引。
- 表中的数据修改频率较高时不建议建立索引,否则会大大增加更新的维护成本。
2). 创建索引的方式
- 【语法】
- 1. 单列索引
- 单列索引是基于单个列所建立的索引;
- 【触发单列索引规则】:条件必须是索引列中的原始值;如果条件中使用的索引列的非原始值,比如单行函数,模糊查询,会使引擎放弃索引触发进而全表检索
- 创建单列索引
- create index idx_ename on emp(ename);
- 触发单列索引
- select * from emp where ename='SCOTT';
- 2. 复合索引
- 复合索引是基于两个列或者多个列的索引。在同一张表上可以有多个索引,当然,要求列的组合必须不同!
- 【触发复合索引规则】:第一列为优先检索列,如果要触发复合索引,必须包含有优先检索列中的原始值
- 创建复合索引,第一列的ename为优先检索列
- create index idx_ename_job on emp(ename, job);
- 触发复合索引
- select * from emp where ename = 'SCOTT' and job = 'xx';
- 注意:or 关键字会放弃索引
- select * from emp where ename = 'SCOTT' or job = 'xx'; -- 这里的 or 关键字不会触发索引
- 如果一个索引列既被设置为单列索引,又被设置为多列索引,如下写法触发的为单列索引






评论(0)


暂无数据
推荐帖子
0条评论
1条评论
0条评论