sql-optimizer:給 SQL 做性能與正確性審查,產出優化版 SQL

前言

慢查詢排查最常見的困境是:知道語句慢,但不確定是缺索引、寫法有問題,還是結果集被乘積放大了。人工排查要逐條看執行計劃、覈對表結構和數據分佈,成本不低。如果只是偶爾一條語句,自己改還來得及;如果是一批存量 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

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

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

小夜