Postgres 可能因代价估算的微小波动为同一查询选择截然不同的执行计划,导致堆块访问从 73 暴增至 3449。作者用 ExoBench 在合成 FEC 数据上复现了这一“计划抛硬币”现象,发现两索引方案不稳定。最终通过创建单个多列 GIN 索引(结合 btree_gin 与 pg_trgm)将交集下推到索引内部,消除规划器决策,使查询从 193.8 毫秒降至 0.76 毫秒。
作者在部署BookWyrm时遇到数据库错误,因PostgreSQL缺少pg_trgm扩展。通过在数据库中运行`CREATE EXTENSION IF NOT EXISTS pg_trgm;`解决问题,恢复了用户搜索功能。建议使用PostgreSQL的用户检查必要扩展,尤其是pg_trgm,以提升搜索和文本匹配能力。
完成下面两步后,将自动完成登录并继续当前操作。