文本列上的唯一索引 - 索引类型是什么?

时间:2014-04-24 08:14:17

标签: postgresql indexing

在我的表格中,我有slug类型的列TEXT。它将存储将用于这样的查询的slug:

SELECT * FROM posts WHERE slug = 'my-post-slug'

现在我在slug上设置了unique索引。

  1. 唯一索引的类型是什么(btree,hash,...)?
  2. 是否足够,或者我应该在slug类型的hash列上添加第二个索引?

1 个答案:

答案 0 :(得分:4)

重新1)

如果未指定索引类型,则默认为btree。

重新2)

是的,btree索引就足够了。在Postgres中,哈希索引通常被认为效率不高。此外,他们有一些缺点。

Quote from the manual:

  

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

(强调我的)