InnoDB用的B+树
B+Tree跟B-Tree相比
1,B+Tree索引的磁盘读写代价低
因为B+Tree索引非叶子节点不存数据信息,只存索引,这就意味着物理磁盘同一块的数据区域能读到更多的索引信息,更快找到所查索引的位置,减少IO操作。
2,B+Tree索引的查询效率更加稳定
因为最终查找的数据都在叶子结点,所以路径都是一样的,效率稳定
3,B+Tree更有利于对数据库的扫描
B+Tree索引的叶子结点之间都是链表链接起来的,所以范围查找特别方便
hash索引跟B+Tree相比
1,仅仅能满足 “=”,“IN”,不能使用范围查询,因为hash值是一对一的,数据相互之间没有联系
2,无法被用来避免数据的排序操作
3,不能利用部分索引键查询
4,不能避免表扫描,因为有些hash值可能相等,然后就要进行hash值相等的数据进行扫描
5,遇到大量hash值相等的情况后性能并不一定B-Tree索引高
BitMap 索引
不过很少支持,只有Oracle支持
密集索引和稀疏索引
稀疏索引同一个磁盘块能够查询到更多的值,如果是数据统计,或者范围查找稀疏索引更快
InnoDB