有没有人知道在什么情况下应该使用PostgreSQL的HASH而不是B-TREE,因为对我来说,这些东西很容易让人上当。它们创建或维护所需的时间比B-TREE要多得多(至少10倍),它们还占用更多的空间(对于我的表格中的一列,B-TREE占用240 MB,而HASH将占用4 GB)。从我的谷歌搜索中得出的结论是,它们不比B-TREE的选择更快;然而,HASH可能最近已经进行了优化,或者谷歌是错的。
无论如何,我想知道你们的意见和经验。如果这些HASH是邪恶的,人们应该知道。
谢谢 另外:MySQL的HASH呢?
无论如何,我想知道你们的意见和经验。如果这些HASH是邪恶的,人们应该知道。
谢谢 另外:MySQL的HASH呢?
O(1)
的,但是在数据库中,数据通常存储在磁盘上,索引也可能存在于磁盘上,磁盘访问时间 >> RAM访问时间。我不太记得数据库课程中具体如何工作,但在某些情况下它并不是O(1)
。我仍然期望哈希比较快,但是在Postgres 9.5中,据报道哈希只比b-tree略快,并且它并不完全安全。 - sudoO(1)
,但根据你所讨论的内存是哪一个,它可能是非常大或非常小的值;)。 L1/L2/L3/RAM/Swap不都是相同的速度,但算法本身仍被认为是O(1)
。 - Kent Fredric