【问题标题】:Reasoning behind advantage of hash index/when should they be used over BTREE index?哈希索引优势背后的推理/何时应该在 BTREE 索引上使用它们?
【发布时间】:2013-03-10 05:56:23
【问题描述】:

我在争论使用 BTREE 索引还是 HASH 索引。

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

我已经读到哈希索引对点查询很有用,但是为什么呢?

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

【问题讨论】:

    标签: database indexing


    【解决方案1】:

    您没有提到特定的 DBMS,所以这个答案很笼统。

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

    在挑选方面,如果使用哈希索引

    • 您只期望点查询
    • 您不希望数据落入系统哈希函数的任何性能不佳的情况(奇怪的情况,但我认为我应该提及它)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 2014-01-29
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多