用途:针对慢 SQL 查询进行性能优化,通过消除反模式、重构 JOIN、使用窗口函数以及数据库特定优化,产出可衡量改进的优化版本及配套索引变更。
主要能力:识别常见反模式(SELECT *、IN 子查询、掩盖错误 JOIN 的 DISTINCT、索引列上使用函数、阻止索引的 OR、可空列的 NOT IN);分析执行计划定位最耗时节点;将子查询改写为 JOIN,把相关子查询转为 LATERAL JOIN 或派生表,用 EXISTS 替代 IN;优化 JOIN 顺序;用 IN 替代同列多个 OR;用窗口函数替代自连接或相关子查询;使用 CTE 并注意 PostgreSQL 12 之前的物化行为;优化聚合查询。
使用方式:需提供慢查询文本与当前执行时间、EXPLAIN ANALYZE(PostgreSQL)或 EXPLAIN FORMAT=JSON(MySQL)输出、表行数与数据分布、psql 或 mysql CLI,以及应用对结果排序和 NULL 处理的要求。重写后用 EXPLAIN ANALYZE 对比执行时间、行数估算与实际值、缓冲区使用。
输出:带注释的优化 SQL、前后执行计划、CREATE INDEX 索引建议、反模式报告、性能指标对比。
限制与错误处理:重写可能改变结果(JOIN 类型或 NULL 处理差异),需用 EXCEPT 校验;统计信息过期可能导致优化后更慢,需运行 ANALYZE;CTE 物化可能阻碍谓词下推;窗口函数可能占用过多内存;UNION ALL 可能产生重复。资料未提供具体收费、平台支持范围与安装命令。