在我的表中,我有TEXT
類型的列slug
。它將存儲蛞蝓將被用於查詢這樣的:文本列的唯一索引 - 索引類型是什麼?
SELECT * FROM posts WHERE slug = 'my-post-slug'
現在我成立了塞unique
指數。
- 什麼是唯一索引(btree,hash,...)的類型?
- 夠了還是應該加
slug
類型hash
的第二個索引?
在我的表中,我有TEXT
類型的列slug
。它將存儲蛞蝓將被用於查詢這樣的:文本列的唯一索引 - 索引類型是什麼?
SELECT * FROM posts WHERE slug = 'my-post-slug'
現在我成立了塞unique
指數。
slug
類型hash
的第二個索引?重1)
如果不指定索引類型,默認爲B樹。
re 2)
是的,btree索引就足夠了。在Postgres中,散列索引通常被認爲不是非常有效。另外他們有一些缺點。
散列索引操作目前未WAL-記錄,所以哈希索引可能需要如果有不成文的變化的數據庫崩潰後REINDEX重建。此外,在初始基礎備份之後,對散列索引的更改不會通過流式傳輸或基於文件的複製進行復制,因此它們會給隨後使用它們的查詢提供錯誤答案。 由於這些原因,目前不推薦使用散列索引。
(重點煤礦)
B-tree不僅僅是默認的。 *目前,只有B-tree索引可以被聲明爲唯一的。* http://www.postgresql.org/docs/9.3/static/indexes-unique.html – pozs
所以你要做的就是測試與'='平等?沒有模式匹配?另外:始終提供您的Postgres版本。 –
是的,只有平等,postgres v = 9.3 – user606521
然後你被a_horse的答案覆蓋。 –