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索引通常不会用到重复值多的列上,比如列为性别,年龄等。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有