gpt4 book ai didi

sql - 字符串匹配的多列索引+与pg_trgm的字符串相似性?

转载 作者:行者123 更新时间:2023-11-29 11:24:24 25 4
gpt4 key购买 nike

给定这张表:

foos
integer id
string name
string type

像这样的查询:

select * from foos where name ilike '%bar%'

我可以做一个pg_trgm index这样可以加快查找速度:

CREATE INDEX ON foos USING gin (name gin_trgm_ops)

(对吗?)

我的问题:像这样的查询怎么样:

select * from foos where name ilike '%bar%' AND type = 'baz'

我能否创建一个有助于查找两列的索引?

(我知道 trigram 不是严格意义上的全文,但我还是这样标记了这个问题)

最佳答案

您可以使用组合不同类型的多列索引。

首先,添加您的情况所需的两个扩展:

CREATE EXTENSION pg_trgm;
CREATE EXTENSION btree_gist;

pg_trgm允许您使用三字母索引和 btree_gist允许您组合 gistb-tree 索引,这就是您想要的!

对于这样的查询:

SELECT * FROM foo WHERE type = 'baz' AND name ilike '%bar%';

您现在可以创建如下索引:

CREATE INDEX ON foo USING gist (type, name gist_trgm_ops);

像往常一样,查询和索引之间的列顺序必须相同。

关于sql - 字符串匹配的多列索引+与pg_trgm的字符串相似性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21589444/

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