慢查询排查最怕两件事:一上来就加索引,或者只看单条 SQL 的耗时。更有效的顺序是先找到真正消耗资源的语句,再判断是计划问题、索引问题还是等待问题。

一、先找到“总耗时”最高的语句

开启 pg_stat_statements 后,按总执行时间排序,而不是只看平均耗时。一条执行 10 毫秒但每天调用一千万次的查询,往往比偶尔执行 2 秒的报表更值得优化。同时关注调用次数、返回行数和共享块读取量,避免被缓存命中误导。