有人知道应该使用PostgreSQL哈希而不是B树的情况吗?因为在我看来,这些东西是一个trap .它们的创建或维护时间比B-树长(至少是10倍),它们也占用了更多的空间(对于我的一个table.columns,B-树占用240 MB,而散列需要4 GB),而且我似乎从我的谷歌搜索中了解到,它们的 Select 速度并不比B-树快;然而,散列可能最近被优化了,或者谷歌错了.

不管怎样,我想知道你们的意见和经历.如果这些HASH是邪恶的,人们应该知道.

谢谢
另外:MySQL的HASH怎么办?

推荐答案

对于具有已知键值,尤其是已知唯一值的情况,哈希比B-树更快.

如果与<>命令相比,要扫描的列是never,则应使用散列.

哈希是O(1)复杂度,B-树是O(log n)复杂度(iirc),因此,对于具有唯一条目的大型表,获取ITEM="foo",它们将是最有效的查找方法.

当在联接条件下使用这些唯一字段时,这是非常实用的.

Database相关问答推荐

如何将对象源动态设置为子窗体

芭蕾舞女演员坚持 1:N 关系

如何将表字段的默认值设置为 0.00?

如何在 Big Data 中进行模糊搜索

add_index 到数据模型 - Ruby on Rails 教程

当我们需要触发程序的返回值时?

如何在 SQL Server 中将索引从一个表复制到另一个表

当使用多个 WHEN MATCHED 语句时,它们是全部执行,还是只执行一个?

一个 5MB 的 SQL 数据库可以存储多少数据?

向表中添加大量索引是否有缺点?

自动增量唯一标识符

用于 Java 桌面应用程序的最佳数据库是什么

使用 typeORM 搜索早于日期的数据

conflict serializable和conflict equivalent有什么区别?

您最喜欢在 django 中管理数据库迁移的解决方案是什么?

如何动态更改 Ruby on Rails 中所有模型的 Active Record 数据库?

如何一次插入1000行

SQLite3 UNIQUE 约束失败错误

存储信用卡号 - PCI?

获取 SQL Server 2008 中新插入行的主键