如果我通过创建此索引将 users.email
上的常规唯一索引更改为不区分大小写的索引:
CREATE UNIQUE INDEX user_email_ci_idx ON users ((lower(email)));
有什么理由不删除前面区分大小写的索引吗?
我猜 Postgres 会切换到新索引,性能会相当吗?
最佳答案
新索引只能与基于索引表达式的条件一起使用:
...
WHERE lower(email) = 'abc@foo.org' -- search string in lower case.
只要记住这一点,就可以删除旧的区分大小写的索引。
或者你看看trigram indexes开始时不区分大小写。
参见:
关于sql - postgres 中不区分大小写的索引,处理区分大小写的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21974985/