postgres中的不区分大小写的索引,处理区分大小写的查询?

时间:2014-02-23 21:43:25

标签: sql postgresql indexing pattern-matching

如果我通过创建此索引将users.email上的常规唯一索引更改为不区分大小写的索引:

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

是否有理由不放弃先前区分大小写的索引?

我猜想postgres将切换到新索引,结果集的性能将相当。

1 个答案:

答案 0 :(得分:5)

新索引只能用于与表达式匹配的条件:

...
WHERE lower(email)  = 'abc@foo.org' -- search string in lower case.

只要您记住这一点,就可以删除旧的,非功能性的区分大小写的索引。

或者你看看trigram indexes哪个工作用例不敏感。