小编jwe*_*est的帖子

如何使 PostgreSQL 中的“phraseto_tsquery”与“plainto_tsquery”一样快

一些背景:

\n\n

我有一个表,documents其中包含超过 200,000 行,其中有一列body,该列可能很长。我在这张表上放置了一个索引:

\n\n
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

问题:

\n\n

虽然plainto_tsquery('english', 'awesome website')运行速度很快,但phraseto_tsquery('english', 'awesome website') runs extremely slow. (I've also triedto_tsquery('english', 'awesome <-> website') 也运行得很快,而且速度也非常慢。)

\n\n

问题:

\n\n

我怎样才能加快速度?我的索引做错了吗?我真的需要考虑到\xe2\x80\x94的位置,phraseto_tsquery使用似乎是最好的方法。任何帮助将非常感激。

\n\n

(编辑)解释:

\n\n

这是快速查询:

\n\n
EXPLAIN (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)

postgresql index

5
推荐指数
1
解决办法
2824
查看次数

标签 统计

index ×1

postgresql ×1