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

标签 sql postgresql indexing pattern-matching

如果我通过创建此索引将 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/

相关文章:

c# SQL Compact 监控 FileSystemWatcher 或 SqlDependency

postgresql - 逗号分隔的字段和逗号分隔的搜索数据

sql - 如何在函数中传递参数数量以在 IN 子句中使用 Postgresql

sql - Oracle 优化器尴尬地不喜欢使用索引

arrays - 修改了key但没有真正修改value?

sql - 在 postgres 中读取 XML 属性

mysql - 如何计算两个不同表的两列之和?

c# - 手动迁移时 '00' 附近的语法不正确

postgresql在不重启的情况下重新加载ssl conf文件

java - 如何获取 Apache Lucene 索引数据表(如 "select * from Table_Name")的完整 View ?