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

rt4zxlrg  于 2023-01-30  发布在  PostgreSQL
关注(0)|答案(1)|浏览(299)

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

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

有什么理由不删除前面的区分大小写的索引吗?
我猜Postgres将切换到新的索引,性能将是等同的?

2sbarzqh

2sbarzqh1#

新索引只能用于基于索引表达式的条件:

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

只要记住这一点,就可以删除旧的区分大小写索引。
或者您可以看看trigram indexes,它一开始就不区分大小写。
参见:

  • PostgreSQL LIKE查询性能变化
  • 下部LIKE与iLIKE

相关问题