码迷,mamicode.com
首页 > 其他好文 > 详细

索引有B+索引和hash索引,各自的区别

时间:2018-06-23 22:37:24      阅读:477      评论:0      收藏:0      [点我收藏+]

标签:bsp   一个   存在   大小   ash   多次   运算   mil   strong   

Hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B+树索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,那为什么大家不都用Hash索引而还要使用B+树索引呢?

1. Hash索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。因为经过相应的Hash算法处理之后的Hash值的大小关系,并不能保证和Hash运算前完全一样;

2. Hash索引无法被用来避免数据的排序操作。因为Hash值的大小关系并不一定和Hash运算前的键值完全一样;

3. Hash索引不能利用部分索引键查询。对于组合索引,Hash索引在计算Hash值的时候是组合索引键合并后再一起计算Hash值,而不是单独计算Hash值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash索引也无法被利用;

4. Hash索引在任何时候都不能避免表扫描。由于不同索引键存在相同Hash值,所以即使取满足某个Hash键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要回表查询数据; 

5. Hash索引遇到大量Hash值相等的情况后性能并不一定就会比B+树索引高。

索引有B+索引和hash索引,各自的区别

标签:bsp   一个   存在   大小   ash   多次   运算   mil   strong   

原文地址:https://www.cnblogs.com/whu-2017/p/9218834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!