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

jus*_*don 9 sql postgresql indexing pattern-matching

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

CREATE UNIQUE INDEX user_email_ci_idx ON users ((lower(email)));
Run Code Online (Sandbox Code Playgroud)

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

我猜想postgres将切换到新索引,结果集的性能将是相同的.

Erw*_*ter 7

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

...
WHERE lower(email)  = 'abc@foo.org' -- search string in lower case.
Run Code Online (Sandbox Code Playgroud)

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

或者你看看三元组索引,它开始时工作区不敏感.