首页 > 试题广场 >

基于哈希的索引和基于树的索引有什么区别?

[不定项选择题]
基于哈希的索引和基于树的索引有什么区别?
  • hash索引仅满足“=”、“IN”和“<=>”查询,不能使用范围查询
  • hash索引无法被用来进行数据的排序操作
  • 对于组合索引,Hash索引在计算Hash值的时候是组合索引键合并后再一起计算Hash值,而不是单独计算Hash值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash索引也无法被利用
  • Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高
ABCD

1、hash索引仅满足“=”、“IN”和“<=>”查询,不能使用范围查询

因为hash索引比较的是经常hash运算之后的hash值,因此只能进行等值的过滤,不能基于范围的查找,因为经过hash算法处理后的hash值的大小关系,并不能保证与处理前的hash大小关系对应。

2、hash索引无法被用来进行数据的排序操作

由于hash索引中存放的都是经过hash计算之后的值,而hash值的大小关系不一定与hash计算之前的值一样,所以数据库无法利用hash索引中的值进行排序操作。

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

4、Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。

对于选择性比较低的索引键,如果创建 Hash 索引,那么将会存在大量记录指针信息存于同一个 Hash 值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下。


发表于 2015-03-04 21:32:06 回复(5)
这道题我根本不懂,想着全选错了好标记,结果...哈哈哈
发表于 2019-04-19 15:44:53 回复(2)
'a' <=> NULL得0,NULL<=> NULL得1。
'a' = NULL得NULL,NULL= NULL得NULL。
编辑于 2019-02-18 11:55:49 回复(0)
求问"<=>"是什么?
发表于 2016-09-03 16:39:10 回复(11)
没想到是全选……
发表于 2023-04-27 22:27:00 回复(0)
hash索引为啥不能范围查找呢?有篇博客说可以:
发表于 2021-06-09 11:28:07 回复(1)
TreeMap排序也是是用的hashcode和equlas比较吗
发表于 2017-12-04 22:06:04 回复(0)
1.键值被hash后,相当于有一次映射,肯定不能再进行范围查询
2.hash相当于映射,原来的大小关系进行Hash后可能会改变
C、D看书吧
发表于 2017-06-16 15:44:19 回复(0)
hash索引可以被用来进行数据的排序操作吧,如何有1-9 9个数,使用哈希函数 k%10,这样不就排序了?
发表于 2016-09-01 16:14:31 回复(6)
这到题目选什么啊
发表于 2015-03-02 21:21:35 回复(1)