2014-02-23 75 views
2

如果我創建這個索引改變users.email定期唯一索引不區分大小寫的一個:postgres中的不區分大小寫索引,處理區分大小寫的查詢?

CREATE UNIQUE INDEX user_email_ci_idx ON users ((lower(email))); 

任何理由不放棄先前大小寫敏感指數?

我猜測postgres會切換到新的索引,並且結果集在性能方面將是等效的。只要你記住這一點,就可以刪除舊的,非功能性的,大小寫敏感指數

... 
WHERE lower(email) = '[email protected]' -- search string in lower case. 

回答

2

新的索引只能與條件相匹配的表達式中使用。

或者您可以看看trigram indexes,其中工作不區分大小寫。