有没有人知道应该使用PostgreSQL散列而不是B树的情况,因为在我看来,这些东西是一个陷阱。它们比B-树需要更多时间来创建或维护(至少是B-树的10倍),它们也占用更多空间(对于我的table.columns之一,B-树占用240MB,而散列需要4 GB),我似乎从我的谷歌搜索中了解到,它们选择的速度并不比B-树快;然而,散列可能是最近优化过的,或者谷歌错了。
不管怎样,我想要你们的意见和经历。如果这些HASH是邪恶的,人们应该知道。
谢谢
还有:MySQL的HASH怎么样?
发布于 2008-12-29 22:31:30
如果您有一个已知的键值,尤其是一个已知的唯一值,则哈希比B树更快。
如果与<或>命令相比,从来不打算扫描有问题的列,则应该使用散列。
哈希是O(1)复杂度,B-Trees是O(log n)复杂度( iirc ),因此,对于具有唯一条目的大型表,获取ITEM="foo"将是最有效的查找方式。
当在联接条件中使用这些唯一字段时,这一点尤其实用。
发布于 2015-12-22 16:11:26
对于仅使用=运算符搜索的文本列,最好使用Hash索引。例如,需要为查找建立索引的URL列。
哈希索引的大小大约是类似URL的B-Tree索引的30%。
减小的大小允许PostgreSQL更有效地使用其缓存(也称为shared_buffers)。
发布于 2014-02-27 23:31:57
由于http://www.postgresql.org/docs/9.2/static/sql-createindex.html点哈希索引仍然不是WAL安全的;这意味着它们对于崩溃不是100%可靠的(索引必须重建,并且在复制时可能会发生错误响应)。另请检查http://www.postgresql.org/docs/9.1/static/wal-intro.html
https://stackoverflow.com/questions/398884
复制相似问题