热线电话:13121318867

登录
2019-03-09 阅读量: 847
Oracle的索引

索引是用于加速数据存取的数据对象,有很多种数据结构的不同实现方式,基本思想就是在表的列上构建一个二叉树。合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。索引大大提高了查询的效率,但是却增加了更新的维护成本,所以不能乱建索引,不能建立过多的索引,对于不经常查询的字段,就不要去建对应的索引。

创建索引之后再pl/sql工具的左边的indexes下刷新即可看见创建的索引

1). 索引的使用原则

  1. 在大表上建立索引才有意义。
  2. 在where字句后面或者是在连接条件on上或者过滤条件having后面的字段建立索引。
  3. 表中的数据修改频率较高时不建议建立索引,否则会大大增加更新的维护成本。

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 关键字不会触发索引
  • 如果一个索引列既被设置为单列索引,又被设置为多列索引,如下写法触发的为单列索引

27.2058
4
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子