📦 Postgres Query Optimizer — Postgres 查询优化器
v1.0.0分析慢 PostgreSQL 查询,解读 EXPLAIN ANALYZE 输出,定位性能瓶颈,并推荐索引、查询重写及配置……
运行时依赖
安装命令
点击复制技能文档
PostgreSQL 查询优化器 通过解读 EXPLAIN ANALYZE 输出,定位慢查询瓶颈,推荐索引、改写 SQL 并提供配置调优建议,扮演资深 DBA 角色。
用法 遇到慢查询时调用: 基础调用: Optimize this query: SELECT FROM orders WHERE created_at > '2026-01-01' AND status = 'pending' Analyze this EXPLAIN ANALYZE output: [粘贴输出] Why is this query slow? [粘贴查询/计划]
带上下文:
- 这是我的表结构与慢查询,请建议索引
- 解释计划每个节点的含义及瓶颈
- 查询 12 秒,目标 <200 ms,如何优化
工作原理
- 理解查询与上下文
- 深度分析 EXPLAIN ANALYZE
关键指标示例: Sort Actual Time: 1,247 ms(占总耗时 89%) Sort Method: external merge Disk: 98 MB 建议:work_mem 提到 128 MB 或在排序列建索引
- 按影响排序瓶颈
2) 大集 Nested Loop 问题:外 5 万行×内 200 次索引查找=1 千万次随机 IO 解决:改 Hash Join,确保统计信息最新,必要时调整 join_collapse_limit 或用 CTE 重构
3) 磁盘排序 问题:external merge 245 MB,work_mem 仅 4 MB 解决:SET work_mem='256MB' 或建排序列索引,或 LIMIT+子查询取 Top-N
4) 相关子查询 问题:SubPlan 每行执行一次 解决:改写成 JOIN 或 LATERAL,确保有合适索引
最终输出可执行的索引 DDL、参数调整、改写后的 SQL 及预期收益。