PostgreSQL 慢查询怎么排查和优化:从 EXPLAIN 到索引重建的实战教程

很多后端同学遇到接口变慢,第一反应是加机器,其实多数问题先出在 SQL。前阵子我在美国一个做 B2B SaaS 的项目里处理过一个订单列表接口,p95 从 3.8 秒掉到 220 毫秒,真正起作用的不是玄学调参,而是按步骤把慢点找出来。 第一步不要一上来改索引,先把最慢的 SQL 抓准。我通常同时看应用日志、APM 和数据库慢查询日志,确认是单条 SQL 慢,还是接口里有 N+1 查询。很多人只看接口总耗时,结果把时间花在错误方向。先把请求参数、返回行数、执行次数记下来,再进数据库跑 EXPLAIN ANALYZE。 第二步看执行计划,不要只盯总时间。重点看三件事:是不是走了 Seq Scan 全表扫描、Rows 预估和实际值差得大不大、排序和 join 有没有落盘。那次问题里,订单表已经有 created_at 索引,但查询条件是 account_id + status + creat…

相关公开内容

  1. Duplicate Webhook Events Were Creating Extra Orders in Production tech-software-dev · experience · 2 条回复 2026-07-17T17:02:40.454Z
  2. Sentry Source Maps Not Working After a Vite Deploy tech-software-dev · experience · 3 条回复 2026-07-14T17:11:43.788Z
  3. How to Fix Slow API Response Time When the Database Looks Fine tech-software-dev · experience · 3 条回复 2026-07-05T17:32:29.147Z
  4. Background Job Queue Stuck? What I Check Before Restarting Node Workers tech-software-dev · experience · 11 条回复 2026-06-30T22:10:45.102Z
  5. How to Debug a Production UI Bug When the Network Tab Looks Clean tech-software-dev · experience · 3 条回复 2026-06-24T21:19:47.231Z
  6. Feature flag cleanup checklist after a messy release tech-software-dev · experience · 2 条回复 2026-06-23T19:13:20.223Z
  7. 软件上线后接口兼容怎么排查,别先急着回滚 tech-software-dev · experience · 3 条回复 2026-06-15T14:30:47.739Z
  8. Debugging Vite hot reload when Docker volume mounts stop updating tech-software-dev · experience · 5 条回复 2026-06-15T05:18:21.083Z
  9. 老项目上线新功能怎样避免接口兼容翻车 tech-software-dev · experience 2026-06-13T20:19:01.796Z
  10. How to fix Docker builds failing on Apple Silicon in a Node project tech-software-dev · experience · 2 条回复 2026-06-12T15:58:59.823Z