Oracle数据库索引概览

本文探讨了Oracle数据库中的索引类型,包括B-tree、位图和基于函数的索引,强调了索引的可见性、适用性和维护注意事项。文章指出,理想的索引应包含查询所需的所有列,避免NULL值,并保持较低的聚簇因子以优化I/O性能。此外,低基数和静态表是创建索引的良好场景。最后,提到了索引段的存储位置管理。
摘要由CSDN通过智能技术生成

在进行数据访问时,如果没有索引,那么数据库必须进行全表扫描来查找所需的数据,通过在一个或者多个列上创建索引,可以提高对数据的访问速度,索引也是减少磁盘I/O的方法。

索引特性

索引是一个schema对象,它在逻辑和物理上独立于所关联的对象的数据,因此,索引能够在不影响表的情况下进行删除或者创建。

对于单行数据,索引是通向它的快速访问路径,它只影响执行速度,给定一个已被索引的数据,索引直接指向包含该值的数据行的位置。

索引创建后,数据库自动的维护和使用它,数据库也会自动的反映数据的变化,比如在所有相关的索引中添加、更新和删除行,而不需要用户进行额外的操作。即使插入了新行,索引数据的检索性能几乎保持不变,但是,由于数据库对索引的更新,表上有过多索引会降低DML的性能。

索引有下面的属性:
  • 可用性(Usability)
索引分为usable或者unusable,默认为usable。unusable索引不会被DML操作维护,并且被优化器忽略。unusable索引能够改善批量加载的性能。可以使索引unusable,然后rebuild它,而不是删除一个索引,然后重新创建它。unusable索引和索引分区不会占用空间,当改变一个usable索引为unusable时,数据库将会删除它的索引段。
  • 可见性(Visibility)
索引也可分为visible或者invisible,默认是visible。invisible索引会被DML操作维护,默认不会被优化器使用。将一个索引置为invisible是使索引unusable或者删除的一种替代方法。在不影响整个应用程序的情况下,删除索引之前测试索引的删除或者临时的使用索引,采用invisible索引是尤其有用的方法。

主键和唯一键可以自动的创建索引,而外键需要手动创建索引。

索引类型

Oracle数据库提供了如下索引:
  • B-tree索引(B-tree indexes)
              B-tree索引是标准的索引类型,有以下子类型:
Index-organized tables:索引组织表与堆组织表不同,因为数据本身是做引;
Reverse key indexes:索引键的字节被反转;
Descending indexes:将某一特定列或一些列按降序存储数据;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值