欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于ORACLE索引的学习记录

程序员文章站 2022-07-01 19:12:21
在开始,只知道在大部分情况下,使用索引能够提升效率,但是对他的原理还是不了解,现在进行笔记记录: 1.索引是中的一类对象,在创建完成后,跟表一样需要占用磁盘空间; 2.索引在创建时,数据库会对创建索...

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

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) = '234';

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

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

重建索引的方式

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

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

b.先drop index 后create index

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