2014-04-24 47 views
0

在我的表中,我有TEXT類型的列slug。它將存儲蛞蝓將被用於查詢這樣的:文本列的唯一索引 - 索引類型是什麼?

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

現在我成立了塞unique指數。

  1. 什麼是唯一索引(btree,hash,...)的類型?
  2. 夠了還是應該加slug類型hash的第二個索引?
+0

所以你要做的就是測試與'='平等?沒有模式匹配?另外:始終提供您的Postgres版本。 –

+0

是的,只有平等,postgres v = 9.3 – user606521

+0

然後你被a_horse的答案覆蓋。 –

回答

4

重1)

如果不指定索引類型,默認爲B樹。

re 2)

是的,btree索引就足夠了。在Postgres中,散列索引通常被認爲不是非常有效。另外他們有一些缺點。

Quote from the manual:

散列索引操作目前未WAL-記錄,所以哈希索引可能需要如果有不成文的變化的數據庫崩潰後REINDEX重建。此外,在初始基礎備份之後,對散列索引的更改不會通過流式傳輸或基於文件的複製進行復制,因此它們會給隨後使用它們的查詢提供錯誤答案。 由於這些原因,目前不推薦使用散列索引

(重點煤礦)

+2

B-tree不僅僅是默認的。 *目前,只有B-tree索引可以被聲明爲唯一的。* http://www.postgresql.org/docs/9.3/static/indexes-unique.html – pozs