SQL / Database Skill(for Agents)
适用场景
- SQL 模式设计、查询优化、索引调整、迁移脚本、数据一致性问题
- 与应用层联调涉及查询性能和数据安全的任务
核心原则
- 先读模型与索引:先确认主键、外键、唯一性和索引策略,再改 SQL。
- 最小影响:尽量以只读分析或增量迁移方式提交,降低线上风险。
- 正确性优先:任何优化都要保证幂等、事务安全和回滚可行。
强制执行清单
- DDL/DML 改动必须明确迁移方向(Up/Down 或回滚方案)。
- 变更涉及字段/约束时检查应用层兼容性(序列化/ORM 映射)。
- 使用参数化查询,避免拼接 SQL。
- 大查询加入索引评估:过滤列、排序列、连接列是否可被命中。
- 敏感数据访问添加最小权限和审计字段(creator/operator/updated_at)。
推荐实践
- 复杂查询先
EXPLAIN ANALYZE验证执行计划再改结构。 - 统计列与时间范围查询优先复合索引与覆盖索引。
- 热更新类变更优先采用蓝绿 / 滚动策略,避免一次性锁表。
- 逻辑删除字段与历史表写清生命周期,不与主键索引混淆。
常用质量门禁
EXPLAIN/EXPLAIN ANALYZE(或数据库对应执行计划工具)- 迁移脚本 dry-run / 测试环境回放
- 慢查询日志复核(阈值由项目约定)
- 数据一致性检查(计数核对、校验和或抽样对账)
反模式(避免)
- 在高频路径使用无索引
LIKE '%xxx'全表扫描。 SELECT *在 API/导出路径直接暴露多余字段。- 无事务批量写导致部分成功部分失败。
- 在生产直接执行大表
ALTER而未评估锁与回滚时间。
与仓库冲突时的优先级
- 以数据库类型版本、迁移框架与 CI 数据库测试约束为准。
- 与本文件冲突时,以项目实际变更审批与回滚策略为准。