SKILL.md
1.8 KB查看排版效果| 1 | --- |
| 2 | name: sql-tuning-gate |
| 3 | description: 按 EXPLAIN 关键指标定序排查慢 SQL:索引、写法反模式、数据量与锁,输出定位结论、可执行改写与前后验证闭环。 |
| 4 | --- |
| 5 | |
| 6 | # SQL 调优检查闸门 |
| 7 | |
| 8 | > 对慢查询做定序排查并给出可执行改写。纯指令技能:不带脚本、不联网、不写任何文件,产出为分析结论与改写文本。 |
| 9 | |
| 10 | ## 排查顺序(逐级收敛,不跳步) |
| 11 | |
| 12 | ### 1 读执行计划(EXPLAIN / EXPLAIN ANALYZE)关键指标 |
| 13 | |
| 14 | - 访问类型:全表扫描还是索引扫描,命中到哪一层; |
| 15 | - 预估行数与实际行数偏差大 → 统计信息过期或优化器误判; |
| 16 | - Extra 中的排序、临时表、回表提示。 |
| 17 | |
| 18 | ### 2 索引层 |
| 19 | |
| 20 | - WHERE、JOIN、ORDER BY 涉及的列有没有可用索引; |
| 21 | - 联合索引顺序是否符合最左前缀;选择性差的列是否应放后面; |
| 22 | - 是否可用覆盖索引消除回表。 |
| 23 | |
| 24 | ### 3 写法层(反模式逐条对照) |
| 25 | |
| 26 | - 对列做函数或运算导致索引失效; |
| 27 | - 隐式类型转换(字符串列传数字); |
| 28 | - SELECT * 拖宽回表;深分页 OFFSET;大 IN 列表; |
| 29 | - 子查询被逐行执行时改写为 JOIN。 |
| 30 | |
| 31 | ### 4 数据量与锁 |
| 32 | |
| 33 | - 单表行数量级;等待锁事件;批量写是否应分批。 |
| 34 | |
| 35 | ## 输出格式 |
| 36 | |
| 37 | 1. **定位结论**:一句话指出主因,附执行计划证据; |
| 38 | 2. **改写方案**:给出改写后的完整 SQL,逐条说明每处改动针对哪个指标; |
| 39 | 3. **索引方案**:给出建索引语句,附预期收益与代价(写放大、空间); |
| 40 | 4. **验证闭环**:改前与改后各跑一次 EXPLAIN 与耗时,记录两个数字——没有对比数字不宣称「已优化」。 |
| 41 | |
| 42 | ## 红线 |
| 43 | |
| 44 | - 不在没有执行计划的情况下凭经验下结论; |
| 45 | - 不为「可能的需求」提前建索引; |
| 46 | - 改写不得改变业务语义:改动后列出语义对比,逐项确认等价。 |
文件内容是平台检查时读出的文本,只供查看。平台不会运行包里的任何脚本或程序。

