小编Chr*_*Orr的帖子

使用 pg_trgm 索引进行相似性搜索的查询时间很慢

我们在表中添加了两个 pg_trgm 索引,以通过电子邮件地址或姓名启用模糊搜索,因为我们需要按姓名或注册期间拼写错误的电子邮件地址(例如“@gmail.con”)查找用户。ANALYZE在索引创建后运行。

但是,在绝大多数情况下,对这些指数中的任何一个进行排名搜索都非常缓慢。即随着超时的增加,查询可能会在 60 秒内返回,在极少数情况下会快到 15 秒,但通常查询会超时。

pg_trgm.similarity_threshold是 的默认值0.3,但将其提高到0.8似乎并没有什么不同。

这个特定的表有超过 2500 万行,并且不断被查询、更新和插入(每个的平均时间低于 2 毫秒)。设置是 PostgreSQL 9.6.6,运行在具有通用 SSD 存储和或多或少默认参数的 RDS db.m4.large 实例上。pg_trgm 扩展是 1.3 版。

查询:

这些查询不需要经常运行(一天几十次),但它们应该基于当前的表状态,并且最好在 10 秒左右返回。 …

postgresql performance postgresql-9.6 query-performance

9
推荐指数
1
解决办法
1097
查看次数