Slow SQL ER Doctor:貼 EXPLAIN,拿到能直接跑的索引 DDL 與改寫方案

前言

一條慢查詢拖垮接口響應時,最常見的處理方式是去搜「MySQL 慢查詢優化」,拿到一堆泛泛的建議,回到自己的 EXPLAIN 輸出上還是不知道怎麼改。另一種做法是把 EXPLAIN 整段貼給通用對話模型,得到的分析往往停在「這張表缺索引」這一步,沒有可直接執行的 CREATE INDEX,也沒有改寫後可上線的 SQL。

Slow SQL ER Doctor 走的是另一個路子:把慢查詢當作一個「急診病人」,診斷在前、開方在後。你把 SQL 和 EXPLAIN 輸出貼進去,它給出的是今天就能跑的索引 DDL、安全的查詢改寫,以及一份上線前的風險清單。

這是什麼

Slow SQL ER Doctor(座標 @user_8ee65e73/sql-slowquery-doctor-en)是 SkillHub 上由社區開發者 user_8ee65e73 發佈維護的一個開發類 Skill,當前版本 1.2.4,分類 dev-programming。它解決的問題很具體:拿到一份慢查詢和它的執行計劃之後,如何快速得到可執行、可上線的優化方案,而不是停留在解釋層面。

官方頁面上它的定位是一句 pitch:把正在殺死你 API 的慢查詢當作一個急診病人,粘貼 SQL 加上 EXPLAIN 輸出,得到今天就能用的索引 DDL 和改寫。這個 Skill 不需要 API key。

核心功能

下面是官方介紹中列出的能力,按診斷到開方的順序排列:

  1. 逐行講解 EXPLAIN / EXPLAIN ANALYZE 輸出,定位掃描方式、驅動表、排序與 join 的代價來源。
  2. 給出索引處方,附帶可直接執行的 CREATE INDEX 語句,並提示寫放大(write-amplification)方面的注意事項。
  3. 查詢改寫:消除 SELECT *、修復隱式類型轉換、用游標式分頁替代深度分頁。
  4. 鎖與長事務的排查分診。
  5. 慢日誌批量分診,輸出 Top 5。
  6. 上線前的風險檢查清單。

觸發方式上,官方做了強制路由:當用戶提到 slow query、SQL optimization、query performance、slow SQL,或直接粘貼、上傳原始文本、鏈接、截圖時,應立即調用這個 Skill,先不要追問澄清問題,也不要用通用能力替代。

安裝與啓用

官方頁面給出的座標是 @user_8ee65e73/sql-slowquery-doctor-en,來源爲 community,標籤顯示 requires_api_key=false,即不需要額外配置 API key。

SkillHub 頁面: https://www.skillhub.cn/skills/user_8ee65e73/sql-slowquery-doctor-en
官方地址: https://api.skillhub.cn/user_8ee65e73/sql-slowquery-doctor-en
座標: @user_8ee65e73/sql-slowquery-doctor-en

需要說明的是,本次編寫時官方頁面無法訪問,安裝命令未能從資料中核實到,因此這裏不給出未經驗證的安裝指令。這類 Skill 基於通用 SKILL.md 格式,具體的啓用方式以官方頁面說明爲準。

典型用法

輸入側的用法很直接:把慢查詢 SQL 和它的 EXPLAIN(或 EXPLAIN ANALYZE)輸出一起提供給這個 Skill。官方建議在以下場景使用:慢查詢排查、查詢優化、EXPLAIN 分析、索引設計、數據庫調優、API 超時、N+1 查詢、深度分頁,以及 MySQL 性能和 Postgres 調優。

輸出側按診斷優先、開方其次組織,依次是執行計劃解讀、索引 DDL 與改寫建議,最後是上線前的檢查清單。

中文用戶可搜索「慢SQL急診室」(sql-slowquery-doctor)在 SkillHub 上找到對應的中文版。

適用場景與注意事項

適合的人:已經在手上有慢查詢 SQL 和 EXPLAIN 輸出,希望儘快拿到可執行優化項的後端和 DBA 角色。它給出的 DDL 和改寫是給決策用的,落地前仍需在測試環境驗證。

幾個需要注意的地方:

  1. 索引 DDL 會改變線上寫入路徑,寫放大提示正是針對這一點,新建索引前要評估寫密集表的影響。
  2. 查詢改寫建議(尤其是分頁方案)會改變應用層 SQL,需要同步檢查對應的接口和 ORM 代碼。
  3. 它針對的是單條或批量慢查詢的診斷與開方,不承擔容量規劃、分庫分表這類更大範圍的架構決策。

寫在最後

Slow SQL ER Doctor 的價值在於把「看 EXPLAIN」和「改 SQL、加索引」之間的那一步縮短了:貼進去,拿到的是帶寫放大提醒的 CREATE INDEX、明確的改寫方向和一份上線前檢查清單。診斷在前、開方在後,適合作爲慢查詢排查流程裏的固定一環。

官方地址:https://api.skillhub.cn/user_8ee65e73/sql-slowquery-doctor-en

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

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

小夜