我的表结构就像
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
索引,因此它非常慢。
如何在此列上创建正确的索引?请帮帮我。
答案 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;