Oracle数据库-索引

为什么需要索引

  索引是定义在存储表基础之上,有助于无需检查所有记录而快速定位所需记录的一种辅助存储结构,由一系列存储在磁盘上的索引项(index entries)组成,每个索引项又由两部分构成:

  索引字段:由Table中某些列(通常是一列)中的值串接而成,索引中通常存储了索引字段的每一个值(也有例外)。索引字段类似于词典中的词条。
  行指针:指向Table中包含索引字段值的记录在磁盘上的存储位置。行指针类似于词条在词典中出现的页码。
  

关于索引的一些概念

  1.存储索引项的文件称为索引文件,相对应地,存储表称为主文件

  2.索引文件是一种辅助存储结构,其存在与否不改变存储表的物理结构。然而它的存在可以明显提高存储表的访问速度。
  
  3.索引文件组织方式有两种:
  排序索引文件:按索引字段值的某一种顺序组织存储。
  散列索引文件:依据索引字段值使用散列函数分配散列桶的方式存储。

  4.在一个表上可以针对不同的属性或属性组合建立不同的索引文件,可建立多个索引文件。索引字段的值可以是Table中任何一个属性的值或任何多个属性值的组合值。
  
  5.索引文件比主文件小很多。通过检索一个小的索引文件(可全部装载进内存),快速定位后,再有针对性地读取大的主文件中的有关记录,来提高访问速度,这在主文件字段非常多的时候可以带来很大的性能提升。

  6.有索引时,更新操作必须同步更新索引文件和主文件,否则根据索引查找的结果会不正确。

关于索引应用的评价

  索引技术使检索效率大幅提高,但同时增加了存储空间以及维护负担(维护主文件的同时也要维护索引文件),这也是一种以空间换时间的方法。
  衡量索引性能好坏的指标有:1.访问时间2.插入时间3.删除时间4.空间负载5.支持存取的有效性(如是否支持范围查询)
  选择在哪些字段上建立索引时,要综合考虑以上指标。
  应该对经常出现在检索条件、连接条件、分组计算条件中的属性建立索引。

几个概念

  字段:
  索引字段:在索引文件中,每个索引项对应的索引字段。
  排序字段:在主文件中,按照排序字段进行排序存储。

  码:
  关系中的码:主码(主键,Primary Key)具有唯一性和最小性。
  索引中的码(不一定具有唯一性):
    排序码:对主文件进行排序存储的那些属性或属性组
    索引码:即索引字段,不一定具有唯一性
    搜索码:在主文件中查找记录的属性或属性集

使用SQL进行索引创建与维护

SQL语言关于索引的基本知识

  1.当定义Table后,如果定义了主键,则系统自动创建主索引。
  2.索引可以由用户创建和撤销,可以在任何属性上创建。
  3.当索引被创建后,无论是主索引,还是用户创建的索引,DBMS都将自动维护所有的索引,使其与Table一致。
  4.当Table被删除后,定义在该Table上的所有索引将自动被撤销。

关于索引的语句

  创建索引:

CREATE [unique] INDEX indexname ON tablename(colname [asc|desc] {,colname [asc|desc]...});

  撤销索引:

DROP INDEX indexname;

  选择哪些属性创建索引,以及如何创建与维护索引,如何利用索引改善数据库的运行性能,是DBA的重要职责。但作为应用程序员也需要了解一些索引的概念和原理。

索引的分类

  稠密索引与稀疏索引
  稠密索引:对于主文件中每个记录,都有一个索引项与之对应,这样的索引称为稠密索引。
  稀疏索引:对于主文件中部分记录,有索引项与之对应,这样的索引称为稀疏索引。
  那么,稀疏索引如何定位记录呢?
  定位索引字段为K的记录,需要
  1.首先找相邻的小于K的最大索引字段值所对应的索引项
  2.从该索引项所对应的记录开始顺序进行Table检索,找到比K大的值则结束
  因此,稀疏索引要求主文件必须按对应索引字段的属性进行排序存储。
  稀疏索引与稠密索引相比,空间占用更少,维护任务更轻,但速度要慢。

  (未完,又留了个坑,以后补)
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值