PostgreSql:如何为字符变化数组类型列创建索引

时间:2016-08-24 05:28:13

标签: postgresql

我的表结构就像

CREATE INDEX product_name_idx ON Product USING gin (product_data);

创建的索引: SELECT * FROM Product WHERE ptype in ( 2,3 ) and '%steel%' % any(product_data) offset 0 limit 10;

proudct_data列在数组中最多可包含50个不同的产品名称,而Product表包含大约1M UNIQUE 行。 我需要找出以'steel'为产品的seller_id s,其中'steel'可能是product_data中产品名称的子字符串;

目前我使用以下查询:

product_name_idx

上面的查询给出了预期的结果,但由于它没有使用x.Chosen索引,因此它非常慢。 如何在此列上创建正确的索引?请帮帮我。

1 个答案:

答案 0 :(得分:0)

我认为GIN索引仅适用于tsvector数据类型?

将product_data更改为tsvector类型,重新创建索引并确保在查询中强制转换为tsvector:

SELECT * FROM Product WHERE ptype in ( 2,3 ) and '%steel%'::tsvector % any(product_data) offset 0 limit 10;