SQL Optimizer: Auditing SQL for performance and correctness to produce optimized queries

前言

慢查询排查最常见的困境是:知道语句慢,但不确定是缺索引、写法有问题,还是结果集被乘积放大了。人工排查要逐条看执行计划、核对表结构和数据分布,成本不低。如果只是偶尔一条语句,自己改还来得及;如果是一批存量 SQL 要统一审查,靠人肉就很慢。

下面介绍的 sql-optimizer,就是把这条工作流交给一个 Skill 来跑:输入 SQL,输出优化后的 SQL 和一份分析报告。

这是什么

sql-optimizer 是一个社区出品的 Skill,坐标 @user_aa378cba/sql-optimizer,版本 1.0.0,分类 dev-programming,来自 SkillHub 平台。

它的定位很直接:把一条或多条 SQL 查询做性能与正确性审查,产出两份文档——一份可直接落地的优化版 SQL,一份说明改动依据的分析报告。

核心功能

根据官方简介,它覆盖两类诉求:

1、性能侧:重写慢查询、移除冗余 join、给出合适的索引建议。
2、正确性侧:审查行数乘积(join 导致结果膨胀)、NULL 值、类型不匹配等坑。

方言处理上,它会自行识别 SQL Server / MySQL / Oracle / PostgreSQL,并按对应方言给出索引与语法建议。也就是说,同一套逻辑在不同数据库上不会给出互相矛盾的写法。

触发方式分两种:用户提供 .sql 文件,或直接在对话中贴出 SQL,然后提出「优化」「调优」「审查」「提速」「加索引」「改写法」等需求即可。

安装与启用

官方页面未给出具体的安装命令、目录路径或配置字段。该 Skill 基于通用 SKILL.md 格式,接入方式(如放入哪个 skills 目录、是否需要配置文件)需要以官方页面为准。

需要说明的是:该 Skill 标签显示 requires_api_key=false,即使用上不需要额外申请 API Key,接入后即可调用。

典型用法

官方资料没有提供可复现的输入输出示例。根据简介,典型流程可以概括为三步:

1、准备输入:把 .sql 文件交给 Skill,或直接在对话中贴出 SQL 语句。
2、提出诉求:说明要优化、调优、审查、提速、加索引还是改写法。
3、接收产出:拿到优化后的 SQL 和分析报告两份结果。

具体样例建议以官方页面为准,此处不杜撰示例。

适用场景与注意

适合这几类情况:拿到一批存量 SQL 要统一审查、某条慢查询需要重写、怀疑 join 写错导致结果膨胀、需要针对不同数据库分别给索引建议。

有几点需要留意:

1、它给出的索引建议是基于 SQL 写法本身的分析,不等于真实执行计划结论。上线前仍需在实际库上验证,尤其是数据分布与统计信息不同的情况下。
2、行数乘积、NULL、类型问题属于静态审查,能发现问题但不保证覆盖所有边界。
3、方言识别是自动的,如果语句本身混用特性,建议在诉求里明确说明目标库。
4、该 Skill 来自社区发布,版本 1.0.0,安装数为 0,使用前建议自行审查产出质量。

结尾

sql-optimizer 的价值在于把「审查 + 优化 + 出报告」这条流程固化成一个可重复调用的 Skill,减少人工逐条排查的成本。它不需要 API Key,四种主流方言都能覆盖。

官方地址:https://api.skillhub.cn/user_aa378cba/sql-optimizer

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye