一些背景:
\n\n我有一个表,documents
其中包含超过 200,000 行,其中有一列body
,该列可能很长。我在这张表上放置了一个索引:
CREATE INDEX documents_body_tsvector_index ON documents USING GIN (to_tsvector('english', body));\n
Run Code Online (Sandbox Code Playgroud)\n\n有了这个索引,我的包含 WHERE 子句的查询速度to_tsvector('english', body) @@ to_tsquery('english', 'awesome')
非常快,这很棒。
问题:
\n\n虽然plainto_tsquery('english', 'awesome website')
运行速度很快,但phraseto_tsquery('english', 'awesome website') runs extremely slow. (I've also tried
to_tsquery('english', 'awesome <-> website') 也运行得很快,而且速度也非常慢。)
问题:
\n\n我怎样才能加快速度?我的索引做错了吗?我真的需要考虑到\xe2\x80\x94的位置,phraseto_tsquery
使用似乎是最好的方法。任何帮助将非常感激。
(编辑)解释:
\n\n这是快速查询:
\n\nEXPLAIN (ANALYZE, BUFFERS) SELECT COUNT(*)\nFROM documents\nWHERE to_tsvector('english', body) @@ plainto_tsquery('english', 'termone termtwo');\n\nAggregate (cost=57.16..57.17 rows=1 width=8) (actual time=4.386..4.387 rows=1 …
Run Code Online (Sandbox Code Playgroud)