我应该在postgresql 9.3中使用hash或btree作为外键索引吗?

fra*_*sen 4 hash foreign-keys postgresql-9.3

对于postgresql 9.3中的整数类型的外键,哪个索引表现更好?

我假设一个哈希索引,因为外键comparisson总是用=

或者,在外键上使用JOINS时,btree与哈希的比较速度是否快?

因为在postgresql主键中使用btree,这表明它们对外键也更好.

Fra*_*ens 6

PostgreSQL 9.3上手册:

注意哈希索引操作目前不是WAL记录的,因此REINDEX如果存在未写入的更改,则可能需要在数据库崩溃后重建哈希索引.此外,在初始基本备份之后,不会通过流式传输或基于文件的复制复制哈希索引的更改,因此它们会为随后使用它们的查询提供错误的答案.由于这些原因,目前不鼓励使用哈希索引.

还没有证据表明哈希索引比btree具有任何性能优势.

  • 这在 postgresql 10+ 中不再相关 https://www.postgresql.org/docs/10/sql-createindex.html (5认同)