Agent Skills
返回列表
SQL 查询优化器

SQL 查询优化器

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_c1ff727a/sql-pro-v2。

技能介绍

解决的问题

慢查询定位经常卡在“该加索引、该重写、还是该调参数”之间。字段被 YEAR(created_at)、LOWER(name) 等函数包装,LIKE '%prefix' 导致前缀失效,相关子查询逐行执行,OFFSET 深分页反复跳过已读行,大事务 UPDATE / DELETE 引发锁和日志压力,都会让执行计划偏离预期。

技能如何工作

该技能面向 SELECT、INSERT、UPDATE、DELETE 和 DDL 语句,可结合数据库类型、表结构、索引列表、执行计划和性能目标进行分析。核心流程包括:

  • 补齐上下文:识别 MySQL、PostgreSQL、SQL Server、Oracle、SQLite、MariaDB 等数据库下缺失的 schema、索引、EXPLAIN 和统计信息。
  • 检测反模式:按过滤、Join、子查询、排序、分页、聚合、集合操作、锁和 DML 分类扫描问题,并区分 Critical、High、Medium、Low。
  • 解释执行计划:分析 seq scan、filesort、Using temporary、Sort Method: external merge、Key Lookup、TABLE ACCESS FULL 等信号,指出成本来源。
  • 输出结构化结果:给出 Problem / Impact / Suggestion 表、可执行的重写 SQL,以及 B-tree、复合索引、部分索引或表达式索引建议。

适用边界

它适合做查询诊断、改写建议和索引策略讨论,但不能替代真实数据环境下的验证。索引收益受行数、选择率、并发、缓冲池和统计信息影响;某些改写会改变返回语义、性能特征或维护成本,需要逐条评估后再上线。

使用场景

  • 收到慢查询告警时,结合 `EXPLAIN` 判断是全表扫描、filesort 还是锁等待。
  • 评审订单查询 SQL,识别相关子查询、深分页和函数包装列,给出重写方案。
  • 为报表接口设计复合索引,覆盖过滤字段与排序字段,减少磁盘临时文件。
  • 检查批量 `UPDATE` 和 `DELETE` 是否需分片,避免长事务与锁升级。

适合人员

  • 负责线上接口排障的后端工程师,需要把慢 SQL 定位到具体反模式和执行计划指标。
  • 写报表查询的数据工程师,需要优化过滤、排序和聚合并给出索引建议。
  • 评审数据库变更的 DBA,需要判断索引收益、锁影响和改写风险。
  • 接手遗留订单系统的工程师,需要排查相关子查询、深分页和大批量 DML 问题。