当前位置:首页>开发>正文

hash索引和b 索引区别

2023-04-23 21:15:11 互联网 未知 开发

hash索引和b 索引区别?

hash索引和b 索引区别

Hash索引与B 树索引的区别

由于Hash索引结构和B 树不同,因此在索引使用上也会有差别:

(1)Hash索引不能进行范围查询,而B 树可以。

这是因为Hash索引指向的数据是无序的,而B 树的叶子节点是个有序的链表。

(2)Hash索引不支持联合索引的最左侧原则(即联合索引的部分索引无法使用),而B 树可以。

对于联合索引来说,Hash索引在计算Hash值的时候是将索引键合并后再一起计算Hash值,所以不会针对每个索引单独计算Hash值。因此如果用到联合索引的一个或多个索引时,联合索引无法被利用。

(3)Hash索引不支持Order BY排序,而B 树支持。

因为Hash索引指向的数据是无序的,因此无法起到排序优化的作用,而B 树索引数据是有序的,可以起到对该字段Order By 排序优化的作用。

(4)Hash索引无法进行模糊查询。而B 树使用 LIKE 进行模糊查询的时候,LIKE后面前模糊查询(比如%开头)的话可以起到优化的作用。

(5)Hash索引在等值查询上比B 树效率更高。

不过也存在一种情况,就是索引列的重复值如果很多,效率就会降低。这是因为遇到Hash冲突时,需要遍历桶中的行指针来进行比较,找到查询的关键字非常耗时。所以Hash索引通常不会用到重复值多的列上,比如列为性别,年龄等。

最新文章