我必须从状态表中查询例如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)
));