索引的定义、分类及使用

索引

1、什么是索引?索引的常见类型有什么?

索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

建设原则:

 1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。

 2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。

 3、不应该在小表上建设索引。

 

 

2、分类:我们主要介绍常见的聚集索引和非聚集索引

聚集索引:对正文内容按照一定规则排列的目录称为聚集索引。

比如图书馆新进了一批书。那么这些书需要放到图书馆内。书如何放呢?一般都有一个规则,杂志类的放到101房间,文学类的放到102房间,理工类的放到103房间等等。这些存储的规则决定了每本书应该放到哪里。而这个例子中聚集索引为书的类别。 
     

非聚集索引:目录自己按照一定规则排列,正文自己按照另一种规则排列,目录主要是保存对正文的一个映射关系,这种称为非聚集索引。

继续使用上述提到的例子: 同学如果想去图书馆找一本书,而不知道这本书在哪里?那么这个同学首先应该找的就是检索室。对于要查找一本书来说,在检索室查是一个非常快捷的的途径了。但是,在检索室中你查到了该书在XX室XX书架的信息。但是你的查询并没有结束,你仅仅找到了目的书的位置信息,你还要去该位置去取书。
对于这种方式来说,你需要两个步骤: 
       (1)查询该记录所在的位置。 
       (2)通过该位置去取要找的记录。

 

3、索引的优点和缺点

优点:大大加快数据的检索速度(主要原因)。

缺点:创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

索引需要占物理空间。

 1、索引主要进行提高数据的查询速度。 当进行DML时,会更新索引。因此索引越多,则DML越慢,其需要维护索引。 因此在创建索引及DML需要权衡。

创建索引:
 单一索引:Create Index <Index-Name> On <Table_Name>(Column_Name);

 复合索引: Create Index i_deptno_job on emp(deptno,job); —>emp表的deptnojob列建立索引。

  select * from emp where deptno=66 and job='sals' ->走索引。

  select * from emp where deptno=66 OR job='sals' ->将进行全表扫描。不走索引

  select * from emp where deptno=66 ->走索引。

  select * from emp where job='sals' ->进行全表扫描、不走索引。

  如果在where 子句中有OR 操作符或单独引用Job (索引列的后面列) 则将不会走索引,将会进行全表扫描。

 

4、索引的创建和使用

create index 索引名 on 表名(列名);

注:对于主键或者唯一键,server会自动加索引。

索引使用方法:不用特意使用,Oracle会自动处理。

  1. 删除索引

DROP INDEX indexname;


 

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值