问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
Hash索引有什么缺点?
Hash索引由于其结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree索引需要从根节点到枝节点,最后才能访问页节点这样需要多次I/O访问,所以Hash索引的查询效率要远高于B-Tree索引。
Hash索引也有缺点,主要如下:
1)由于Hash索引比较的是Hash运算之后的Hash值,所以Hash索引仅支持“=”“<=>”以及IN操作,不能使用范围查询。
2)Hash索引无法通过操作索引来排序。由于Hash索引中存放的经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以无法排序。
3)在复合索引时,无法对部分使用索引。对于复合索引,Hash索引在计算Hash值的时候是复合索引键合并后再一起计算Hash值,而不是单独计算Hash值,所以通过复合索引的前面一个或几个索引键进行查询的时候,Hash索引也无法被利用。
4)Hash索引在任何时候都不能避免表扫描。Hash索引是将索引键通过Hash运算之后,将Hash运算结果的Hash值和所对应的行指针信息存放于一个Hash表中,由于不同索引键存在相同Hash值,所以即使取出满足某个Hash键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中实际数据进行相应的比较,才能得到相应的结果。
5)Hash索引遇到大量Hash值相等的情况时,Hash索引的效率是会变低,性能并不一定比B-Tree索引高。
评论
有用 4
墨值悬赏