哈希索引优势背后的推理/何时应该在BTREE索引上使用?

时间:2013-03-10 05:56:23

标签: database indexing

我在使用BTREE索引或HASH索引之间进行辩论。

从理论上讲,使用HASH索引有什么好处?
什么时候应该选择,更重要的是,为什么?

我已经读过哈希索引适合点查询,但是为什么?

我已经知道BTREE索引最适合范围查询,因为您可以通过从左到右轻松遍历叶节点。

1 个答案:

答案 0 :(得分:0)

您没有提及特定的DBMS,所以这个答案非常通用。

正确执行的哈希索引应该在单个提取中达到点查询的答案。 B-Tree将使用类似lg_B(n)辅助存储访问的内容,其中B是近似分支因子,n是条目数。缓存和合理的节点大小可能会将其保留为几次提取,但仍然是哈希索引的两倍。另外,每个B树访问具有与其相关联的非平凡计算,以便遍历每个节点中的子索引(诸如每个节点的lg_2(B)数据比较操作)。哈希索引的计算时间通常非常有限(哈希计算和少量数据比较操作 - 希望是一个)。对于基于B树的索引,在每个节点内进行搜索的计算时间通常很重要。

在选择方面,如果

,请使用哈希索引
  • 您只需要点查询
  • 你不希望数据陷入系统散列函数的任何表现不佳的情况(奇怪的情况,但我想应该提一下)

如果您有任何类型的范围查询和/或希望在可预先确定的一组列上排序结果,B-Tree系列会更好。