gpt4 book ai didi

postgresql - 如何在 postgresql 中添加前缀长度索引?

转载 作者:行者123 更新时间:2023-11-29 12:46:04 26 4
gpt4 key购买 nike

众所周知,在创建索引时可以添加前缀长度列。比如在mysql中,

alter table j1 add index idx_j1_str1 (str1(5)); 

我在 google.com 和 stackoverflow.com 上搜索后没有在 postgresql 中找到任何等效的解决方案。

那谁能告诉我除了postgresql中的函数索引以外的答案。

如有任何回复,我们将不胜感激。

最佳答案

create index idx_j1_str on j1 (left(str1,5));

但我认为您在 Postgres 中不需要这样的东西。 str1 上的索引可能更加通用。但这当然在很大程度上取决于您运行的查询 - 您没有向我们展示,因此无法说出您真正需要哪种索引。

要在 Postgres(以及基本上支持它们的任何其他 DBMS)中使用基于函数的索引,您的查询需要包含与您在索引中使用的表达式相同的表达式:

select *
from j1
where left(str1,5) = '1234'

将使用上面的索引(如果它有意义,例如,如果表足够大并且条件大大减少了整体结果)。

如果您在该列上创建常规索引:

 create index idx_j1_str on j1 (str1 varchar_pattern_ops);

然后它可以用于类似的事情:

select *
from j1
where str1 like '1234%'

(相当于 left(str1,5) = '1234')但它可用于:

select *
from j1
where str1 like '1234678%'

或使用通配符的任何其他前缀搜索。

关于postgresql - 如何在 postgresql 中添加前缀长度索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21823949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com