JAVA-数据库-索引

1.索引概念:
  • 概念:类似于书目录,用于条件查询的时候提高查询的效率。
  • 过程:先查查询索引,再通过索引找到相关的数据(一个索引有多个字段,要把最准确的条件放在第一个,索引选择会以第一个字段为主,进行选择使用哪条第一个字段相同其他字段不同的索引)。
  • 保存:索引本身也是通过文件来进行保存的。
2.索引的类型:
  • 顺序索引:根据值的顺序进行排序(建立的索引字段值顺序的放在索引文件中。)
  • 散列索引:将值平均分配到若干个桶中,通过散列函数进行定位查找。
    • 顺序索引:
      • 聚集索引:被索引的字段本身按照一定的顺序进行排序-》反之为非聚集索引
      • 稠密索引:被索引的字段的每个值都有一个索引进行对应,否则为稀疏索引。
      • 单级索引:把所有的索引字段以及对应的文件位置按顺序一个个进行排列,顺序存储,查找慢,可以用二分法查找。
      • 多级索引:指向索引的索引,B+树。B+树的目的和红黑树都是为了保持树的平衡,但是红黑树是二叉树,B+树下面节点可以有多个子节点。数据库开发商会设置子节点数的一个最大值,这个值不会太小,所以B+树一般来说比较矮胖,红黑树比较瘦高。 B+树的插入,删除,会涉及到一些算法以保持树的平衡。ORACLE的默认索引就是这种结构。如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引。
    • 散列索引:通过散列函数进行定位。散列文件组织用的比较多。散列文件组织根据一个键,通过散列计算把对应的记录放在同一个槽中。这样拥有相同键值的记录一定放在同一个文件中。减少了文件的读取次数,提高了效率。
    • 位图索引:位图索引是一种针对多个字段的简单查询设计一种特殊的索引,适用范围比较小,只适用于字段值比较固定并值的种类比较少的情况,比如性别只有男女,或者级别,并且只有在同时对多个字段进行查询时才能体现出位图的优势。位图的基本思想就是对每一个条件都用0或者1来表示,如有5条记录,性别分别是男,女,男,男,女,那么如果使用位图索引就会建立两个位图,对应男的10110和对应女的01001,这样做有什么好处呢,就是如果同时对多个这种类型的字段进行and或or查询时,可以使用按位与和按位或来直接得到结果了。
总结:
B+树最常用,性能也不差,用于范围查询和单值查询都可以。特别是范围查询,非得用B+树这种顺序的才
可以了。
HASH的如果只是对单值查询的话速度会比B+树快一点,但是ORACLE好像不支持HASH索引,只支持HASH表
空间。
位图的使用情况很局限,只有很少的情况才能用,一定要确定真正适合使用这种索引才用(值的类型很少
并且需要复合查询),否则建立一大堆位图就一点意义都没有了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值