postgresql全文搜索查询太慢

Posted

技术标签:

【中文标题】postgresql全文搜索查询太慢【英文标题】:postgresql full text search query too slow 【发布时间】:2017-10-27 07:56:27 【问题描述】:

一张表有两条sql,一条太慢了,谁能告诉我哪里出了问题,如何优化?

有他们的查询解释打击:

[---------编辑------]

【问题讨论】:

我在 title 字段上有一个 gin 索引,在 city 字段上有一个 b-tree 索引; 未来:请将执行计划发布为formatted textnot screen shots。如果您认为它们太大而无法在此处发布,您也可以将它们上传到explain.depesz.com。 【参考方案1】:

第二个查询中的位图索引扫描返回更多的行,因为条件选择性较差。

因此,位图变得太大而无法放入work_mem,而 PostgreSQL 继续为每个匹配块而不是每个匹配行存储一位(这些是提到的 有损 条目)。

在位图堆扫描期间必须检查更多的行,这会导致执行时间更长。

增加work_mem 以获得更好的结果。

【讨论】:

谢谢,成功了!您知道任何其他选项可以优化 sql 吗?我设置了work_mem=64M,还是需要300ms... 我在问题正文中添加了一张新sql解释的图片,谢谢~ 这只是需要多长时间 - 我认为它无法进一步优化。它必须处理大量数据。 好的,我很欣赏它。

以上是关于postgresql全文搜索查询太慢的主要内容,如果未能解决你的问题,请参考以下文章

如何提高sql2000全文检索搜索效率

我可以以编程方式配置 PostgreSQL 以不消除全文搜索中的停用词吗?

SQL Server 全文搜索返回意外结果

PostgreSQL(全文搜索)与 ElasticSearch

PostgreSQL 全文搜索权重/搜索词的优先级

在 PostgreSQL 上使用 SQLAlchemy 创建全文搜索索引