首页 > 数据库 > Oracle >

关于ORACLE索引的学习记录

2018-07-28

关于ORACLE索引的学习记录。在开始,只知道在大部分情况下,使用索引能够提升效率,但是对他的原理还是不了解,现在进行笔记记录:1 索引是数据库中的一类对象,在创建完成后,跟表一样需要占用磁盘空间;

在开始,只知道在大部分情况下,使用索引能够提升效率,但是对他的原理还是不了解,现在进行笔记记录:

1.索引是数据库中的一类对象,在创建完成后,跟表一样需要占用磁盘空间;

2.索引在创建时,数据库会对创建索引字段进行全表扫描,并进行属性排序(字母升序排序),然后将字段值与字段值所对应的rowid进行一一对应,创建索引条目,当我们查询某个值时,直接找到该值所对应的rowid,再显示该rowid对应的行数据;

3.索引是一种树状结构数据,能过快速的查询需要查询的字段,可以参考二叉树排序的思路;

索引创建的原则:

1.先考虑该表是否进行大量查询操作,还是进行大量增删改操作,进行大量的增删改操作会重建索引,消耗一些时间;

2.字段中重复数据是否太多,例如性别字段,重复值太多,适用于创建位图缩索引,一般字段适用与创建B树索引;

3.在关联条件字段创建索引,在group by 字段创建索引,都能过进行很好的提升效率;

4.数据数据的变化,索引的效率会下降,因此应定期重建索引;

5.主外键上创建索引;

索引失效的情况:

1.where 条件中索引列字段进行 is null 、is not null 进行判断,索引失效,进行全表扫描;

2.where 条件中索引字段进行不等式操作,<>, !=, NOT colum >= , NOT colum <= (< \、> 有时起作用,有时不起索引);

3.索引字段进行运算,例如 where id-1 = 234 ;

4.索引字段进行函数操作,例如where substr(id,1,2) = &#39;234&#39;;

5.索引字段进行后导模糊查询,例如 where name like &#39;%e&#39; ,where name like &#39;e%&#39;索引不会失效;

6.索引字段进行隐式转换,例如数值类型与字符串类型进行判断;

重建索引的方式

1.索引暂时失效:alter index index_name unusable;在进行大表数据导入时,先让索引失效,数据导入完再重建索引;

2.重建索引:a. alter index index_name rebuild;

b.先drop index 后create index

说明:两种方式都是先删除索引,再创建索引,但是效率上a方式比较高

相关文章
最新文章
热点推荐