【发布时间】:2016-07-03 08:32:12
【问题描述】:
我知道 postgresql 不鼓励使用哈希索引。他们实际上说:
"注意哈希索引操作目前没有 WAL 记录,所以哈希 数据库崩溃后可能需要使用 REINDEX 重建索引。 它们也不会通过流式复制或基于文件的复制进行复制。 由于这些原因,目前不鼓励使用哈希索引。”
这是根本不使用它们的好理由,但我不明白为什么 postgresql 开发人员不努力使哈希索引成为一等公民并鼓励在某些情况下使用它们,而不是不鼓励这样做完全没有。
其实如果你只需要搜索相等性,哈希索引应该比任何一种树都优越,因为它们在o(1)中进行搜索、插入和删除,平衡树自然不能优于o (日志(n))。在最坏的情况下,哈希索引可以为 o(n) 工作,但是有很多已知的技术可以避免最坏的情况。如果我是 db 引擎架构师,那么这样的论点肯定会决定我将哈希索引作为可行的替代方案的决定,但对于 postgresql,它似乎有所不同。是否有技术原因,或者这样的决定没有技术动机?
【问题讨论】:
-
Btree 索引与哈希索引一样快。你可以自己试试。
标签: postgresql indexing