SuperAPI AI 工具集

sql-performance-optimizer

数据与分析

查看项目

更新于 10-16 08:11

技能介绍

用途:分析SQL查询性能瓶颈并给出可落地的重写与调优方案,适用于MySQL、PostgreSQL、Trino等数据库,并对Trino分区字段优化提供专门支持。

主要能力:识别慢查询、执行计划解读、索引设计与优化建议、查询重写、库表结构优化。强调先理解业务需求、先分析执行计划、每条优化建议需有数据支撑,并在性能收益与维护成本之间平衡。

使用方式:第一步收集数据库类型与版本、当前耗时、SQL语句、表结构、执行计划;第二步按扫描类型、索引使用、额外操作(Filesort、临时表)定位瓶颈;第三步生成优化方案。执行计划获取示例:MySQL用EXPLAIN FORMAT=JSON;PostgreSQL用EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON);Trino用EXPLAIN (TYPE DISTRIBUTED)。

Trino要点:优先检查"$part_date"等分区字段使用以避免全表扫描;字符串仅用单引号;字段用双引号;日期减法用CURRENT_DATE - INTERVAL '7' DAY;类型转换用CAST(x AS VARCHAR)。判断COUNT DISTINCT能否去除可用SELECT COUNT(*) = COUNT(DISTINCT field) FROM table。

限制与硬性约束:优化后必须与原SQL结果完全一致,包括列数/名称/顺序/类型、行数与分组数、聚合值、GROUP BY字段、精度与小数位、NULL处理。禁止删除或修改GROUP BY字段、擅自把COUNT DISTINCT改为COUNT、增删过滤条件、改变JOIN类型、增删列。交付前须逐项核对列数、行数、分组数、各组值、聚合值与样本行;标签展开类查询需验证多分组而非仅整体,UNION ALL后需检查指标膨胀。具体模板见references目录(forbidden-optimizations.md、verification-examples.md、best-practices.md、trino-rules.md)。回应语言需与用户输入语言一致。