繁体   English   中英

使用Lower()索引的Postgres搜索

[英]Postgres search using lower() index

我有一个Postgres表,其中包含带有大写和小写字符的字符串的列。

Table: company
id| name    | department
------------------------
1 | LM Corp | Repair
2 | BMG Inc | Maintenance
3 | DFR LLC | shipping

使用pgAdmin,我在列上创建了一个索引,如下所示:

CREATE INDEX companydepartment_index
ON public.company (lower(department) ASC NULLS LAST);

当我查询输入字符串为小写字母“ repair”的查询时,我没有找到匹配项。

select company.id from company where company.department = lower($1));

为什么Postgres不使用小写索引来匹配小写字符串?

我不想使用:...其中lower(company.department)= lower($ 1)),因为它违反了使用小写索引的目的。

我不想使用:...其中lower(company.department)= lower($ 1)),因为它违反了使用小写索引的目的。

相反,只有在查询中使用与索引中完全相同的表达式时,才使用索引。 请参阅文档中的表达式索引

表达方式:

where lower(company.department) = lower($1)),

损害具有小写索引的目的。 正是您想要拥有一个的原因。 使用索引重要的是表达式lower(company.department) ,因为这是用于构建索引的表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM