【问题标题】:What is the usecase of hash index?哈希索引的用例是什么?
【发布时间】:2023-03-11 12:11:02
【问题描述】:

什么时候使用哈希索引?

我知道散列理论:当通过散列搜索某物时,它在<> 上是不可比较的,它只能相等或不相等。所以与BTree相反,不能执行分而治之的搜索,而是尽量精确。但是我不明白什么时候有用?

【问题讨论】:

    标签: sql postgresql indexing rdbms


    【解决方案1】:

    哈希索引比 b-tree 索引更快——至少在理论上是这样。 b-tree 索引需要 O(log n) 的努力来搜索。哈希索引更接近常数时间。

    鉴于性能的改进,它们有时很有用。通常不需要不等式和排序。

    【讨论】:

    • 是的,用例是什么?使用哈希索引的理想情况是什么?
    • 唯一的理论用例是 Gordon 提到的速度增益。在实践中,它们通常不会更快(热情!),因此毫无用处。
    • @Gordon,我完全同意,但请提供一个实际用例
    【解决方案2】:

    在 PostgreSQL 中,btree 索引对索引条目大小的硬性限制约为块大小的 1/3。因此,即使 0.00001% 的表行的值可能超过限制,那么您就有问题了。哈希索引避免了这个限制。

    【讨论】:

    • 太棒了!这是 hashindex 有用的唯一用例吗?
    【解决方案3】:

    哈希索引对于相等查询很有用,即当您在表中查找特定元素时(例如,WHERE id=1)。在这种情况下,哈希索引理论上更快。

    另一方面,如果您还需要搜索元素范围(例如,WHERE id>1 和 id

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2012-03-15
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2013-03-22
      相关资源
      最近更新 更多