首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL哈希索引

PostgreSQL哈希索引
EN

Stack Overflow用户
提问于 2008-12-29 22:18:47
回答 4查看 10.7K关注 0票数 29

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

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

谢谢

还有:MySQL的HASH怎么样?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-29 22:31:30

如果您有一个已知的键值,尤其是一个已知的唯一值,则哈希比B树更快。

如果与<>命令相比,从来不打算扫描有问题的列,则应该使用散列。

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

当在联接条件中使用这些唯一字段时,这一点尤其实用。

票数 37
EN

Stack Overflow用户

发布于 2015-12-22 16:11:26

对于仅使用=运算符搜索的文本列,最好使用Hash索引。例如,需要为查找建立索引的URL列。

哈希索引的大小大约是类似URL的B-Tree索引的30%。

减小的大小允许PostgreSQL更有效地使用其缓存(也称为shared_buffers)。

票数 6
EN

Stack Overflow用户

发布于 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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/398884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档