Postgresql Multiple index with USING gin



我必须从状态表中查询例如zips_of_state,state_names,county_names

select  zips_of_state,state_names,county_names 
from state 
where zips_of_state='something' 
OR state_names='something' 
OR county_names ='something';

现在我正在索引为

CREATE INDEX ind_zips 
ON state 
USING gin(to_tsvector('english', zips_of_state)); -- this works

但是我该如何像

CREATE INDEX ind_zips 
ON state 
-- this doesn't work
USING gin(to_tsvector('english', zips_of_state)),state_names, county_names ;

该查询与索引完全不匹配。

如果您不想进行全文搜索,则需要对每列单独使用常规的 B 树索引,以便您可以获得位图或。

如果要全文搜索,请将查询编写为

WHERE to_tsvector('english', zips_of_state) ||
to_tsvector('english', state_names) ||
to_tsvector('english', country_names)
@@ to_tsquery('english', 'something')

anf 在@@运算符左侧的表达式上使用 GIN 索引:

CREATE INDEX ON stat USING gin ((
to_tsvector('english', zips_of_state) ||
to_tsvector('english', state_names) ||
to_tsvector('english', country_names)
));

最新更新