如果我通过创建此索引将users.email上的常规唯一索引更改为不区分大小写的索引:
CREATE UNIQUE INDEX user_email_ci_idx ON users ((lower(email)));
是否有理由不放弃先前区分大小写的索引?
我猜想postgres将切换到新索引,结果集的性能将相当。
答案 0 :(得分:5)
新索引只能用于与表达式匹配的条件:
...
WHERE lower(email) = 'abc@foo.org' -- search string in lower case.
只要您记住这一点,就可以删除旧的,非功能性的区分大小写的索引。
或者你看看trigram indexes哪个工作用例不敏感。