我有一个Ruby on Rails应用程序,它访问包含名为 statements 的表的Postgres数据库 . 该表有一个名为 statement_text 的文本字段,它使用以下表达式进行GIN索引:

CREATE INDEX index_statement_text ON statements USING gin (to_tsvector('simple'::regconfig, COALESCE(statement_text, ''::text)));

我创建了一个表单来搜索 statement_text 字段的内容,结果搜索成功使用GIN索引来显示结果 .

我现在正在尝试更进一步并实现自动完成 - 即当用户在搜索表单中键入最少的4个字符(例如“yank”)时,文本框将显示自动填充建议的下拉列表基于索引中所有匹配的tsvectors(例如,“yankees”) .

每次我这样做,Postgres不仅扫描索引("Bitmap Index Scan"),而且还查询 statement_text 字段本身("Bitmap Heap Scan"),这是完全不必要和相对慢的:我不希望它实际上拉字段,只是tsvectors .

如何强制Postgres对此GIN索引运行仅索引扫描?