【Oracle学习】之 索引(index)

  索引是一种提高数据检索效率的数据库对象,能够为数据的查询提供快捷的存取路径,减少磁盘I/O。虽然索引是基于表而建立的,但索引并不依赖于表。索引由系统自动维护和使用,不需要用户参与。

一、索引类型

(1)B-树索引:按平衡树结构组织的索引,是最常用的索引,也是默认创建的索引类型。B-树索引占用空间多,适合索引值取值范围广(基数大)、重复率低的应用。
(2)位图索引:按位图结构组织的索引,适合索引值取值范围小(基数小),重复率高德应用。
(3)函数索引:基于包含索引列的函数或表达式创建的索引(索引值为计算后的值)
(4)唯一性索引 与 非唯一性索引:唯一性索引是索引值不重复的索引,非唯一性索引是索引值可以重复的索引。在默认情况下,Oracle创建的索引是非唯一性索引。当在表中定义主键约束或唯一性约束时,Oracle会自动在相应列上创建唯一性索引。
(5)单列索引 与 复合索引:索引可以创建在一个列上,也可以创建在多个列上。创建在一个列上的索引称为单列索引,创建在多个列上的索引称为复合索引。


二、索引使用原则

  由于索引作为一个独立的数据库对象存在,占用存储空间,并且需要系统进行维护,因此索引的使用需要遵循下列原则。

(1)导入数据后再创建索引
(2)在适当的表和列上创建适当的索引。如果经常查询的记录数目少于表中记录总数的5%时就应当创建索引;如果经常进行连接,应该在连接列上建立索引;对于取值范很大的列应当创建B树索引,而对于取值范围很小的列应当创建位图索引。
(3)合理设置复合索引中列的顺序,应将频繁使用的列放在其他列的前面。
(4)限制表中索引的数目。表中索引数目越多,查询速度越快,但表的更新速度越慢。
(5)选择存储索引的表空间。在默认情况下,索引与表存储在同一表空间中。


三、索引使用(创建、修改、删除、查看)

CREATE [UNIQUE] | [BITMAP] INDEX index_name  --unique表示唯一索引
ON table_name([column1 [ASC|DESC],column2    --bitmap,创建位图索引
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1]                                 --指定索引在数据块中空闲空间
[STORAGE (INITIAL n2)]
[NOLOGGING]                                  --表示创建和重建索引时允许对表做DML操作,默认情况下不应该使用
[NOLINE]
[NOSORT];                                    --表示创建索引时不进行排序,默认不适用,如果数据已经是按照该索引顺序排列的可以使用

(1)创建

//打开 时间
set timing on 

create index stu_name_index on test_student(s_name);

这里写图片描述

(2)修改索引
1)重命名索引

alter index stu_name_index rename to bitmap_index;

2) 合并索引(表使用一段时间后在索引中会产生碎片,此时索引效率会降低,可以选择重建索引或者合并索引,合并索引方式更好些,无需额外存储空间,代价较低)

alter index stu_name_index coalesce;

3)重建索引

  方式一:删除原来的索引,重新建立索引

  方式二:

alter index stu_name_index rebuild;

这里写图片描述

(3)删除索引

drop index stu_name_index;

(4)查看索引

select index_name,index_type, tablespace_name, uniqueness from all_indexes where table_name ='test_student';

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值