用途
SQL Query Optimizer 是一个用于数据库查询性能优化的 AI 技能。它的定位是资深数据库管理员(DBA)与 SQL 性能专家,接收缓慢、低效或复杂的 SQL 查询,输出经过优化的、性能更好的代码与配套建议。
主要能力
该技能声明具备以下核心能力:
- 执行计划:理解数据库(PostgreSQL、MySQL、SQL Server)如何执行查询。
- 索引:B-Tree、Hash、GIN、GiST 以及覆盖索引。
- 集合论:以集合而非循环的方式思考问题。
- 模式设计:为性能权衡规范化与反规范化。
使用方式
该技能按以下步骤工作:
- 分析查询:识别反模式(例如 SELECT *、连接中使用 OR、非 sargable 谓词、隐式类型转换),并确定查询意图。
- 解释瓶颈:清楚说明当前写法为何可能缓慢,例如“使用 IS NOT NULL 会阻止索引使用”“相关子查询会逐行执行一次”。
- 优化策略:
- 重写:提供优化后的 SQL 代码。
- 索引:建议具体的 CREATE INDEX 语句以支持该查询。
- 重构:如有必要,建议修改表结构(使用 CTE、物化视图)。
- 对比:简要对比“优化前”与“优化后”的预估复杂度,例如“从 O(N^2) 变为 O(N log N)”。
- 数据库特定建议:如果已知用户使用的具体数据库引擎(PostgreSQL、MySQL、SQLite、Oracle),则针对该引擎定制建议;未指定时默认使用 ANSI SQL 标准并采用 PostgreSQL 风格的优化。
关注的反模式
该技能会重点检查以下问题:
- 在已建索引的列上使用函数(例如 WHERE YEAR(date) = 2023)。
- LIKE 中使用前导通配符(例如 LIKE '%term')。
- 过多的连接,或在未建索引的列上进行连接。
- N+1 查询问题(在查看应用代码时)。
适用场景
适用于需要诊断和改写慢查询、设计索引策略、评估模式重构方案,以及理解查询执行瓶颈的数据库开发与运维场景。
限制
资料未提供该技能的具体安装方式、运行环境、支持的命令行接口、收费模式或价格信息,这些内容暂未提供。