mcpField
L
ln-812-query-optimizer

ln-812-query-optimizer

github.com/levnikolaevich数据与数据库58435 次安装2 天前更新
代码仓库

关于 ln-812-query-optimizer

面向代码维护任务的查询优化 Skill,根据审计结果或指定文件定位低效查询。每项修改都通过测试决定保留或回退,并生成修复报告。

主要功能

  1. 01读取审计结果或扫描目标文件
  2. 02按影响优先级安排优化
  3. 03修复 N+1、重复获取与过量读取
  4. 04通过测试执行保留或回退
  5. 05汇总修复结果和失败原因

适用场景

  1. 01处理查询效率审计中发现的问题
  2. 02优化请求热路径中的 N+1 查询
  3. 03减少重复读取或不必要字段获取

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-812-query-optimizer

安装后在 Claude Code 中输入/ln-812-query-optimizer确认已加载。

详细介绍

路径: 文件路径(shared/、references/、../ln-*)均相对于技能仓库根目录。如果在 CWD 中找不到,请定位此 SKILL.md 所在目录,并向上一级查找仓库根目录。

ln-812-query-optimizer

类型: L3 Worker 类别: 8XX 优化 父级: ln-810-performance-optimization-coordinator

修复 ln-651-query-efficiency-auditor 发现的查询效率问题。每项修复都会通过测试验证,并采用保留/丢弃模式。指标:查询次数减少(而非运行时基准测试)。


概述

方面详情
输入docs/project/persistence_audit.md 中的审计发现(ln-651 部分),或目标文件
输出优化后的查询、验证报告
配套工具ln-651-query-efficiency-auditor(发现问题)→ ln-812(修复问题)

工作流

阶段: 预检 → 加载发现 → 排定优先级 → 修复循环 → 报告


阶段 0:预检

检查项必需缺失时的操作
审计发现或目标文件是阻止优化
测试基础设施是阻止(验证需要测试)
Git 工作区干净是阻止(回滚需要干净的基线)

必须阅读: 加载 shared/references/ci_tool_detection.md — 使用其中的测试框架部分检测测试。

工作树与分支隔离

必须阅读: 加载 shared/references/git_worktree_fallback.md — 使用 ln-812 对应行。


阶段 1:加载发现

从审计报告加载

读取 docs/project/persistence_audit.md,提取 ln-651 的发现:

发现类型优化方式
N+1 查询批量加载 / 预加载 / .Include() / prefetch_related
冗余获取传递对象而非 ID,缓存结果
过量获取选择特定字段 / 投影 / .Select()
缺少索引提示添加索引注解 / 迁移
无界查询添加 .Take() / LIMIT / 分页
从目标文件加载

如果没有审计报告:扫描目标文件,查找与上表匹配的查询模式。


阶段 2:确定修复优先级

优先级标准
1(最高)热路径中的 N+1(每次请求都会调用)
2冗余获取(同一实体被多次加载)
3过量获取(只需少数列却使用 SELECT *)
4面向用户的端点缺少分页

阶段 3:修复循环(保留/丢弃)

单项修复周期
FOR each finding (F1..FN):
  1. APPLY: Edit query code (surgical change)
  2. VERIFY: Run tests
     IF tests FAIL → DISCARD (revert) → next finding
  3. VERIFY: Tests PASS → KEEP
  4. LOG: Record fix for report
保留/丢弃决策
条件决策
没有测试覆盖受影响的文件/函数跳过该发现 — 记录为“未覆盖,已跳过”
测试通过保留
测试失败丢弃 + 记录失败原因
修复引入新的 N+1丢弃

注意: 无需基准测试 — 查询优化指标是正确性(测试通过)+ 结构改进(查询更少)。审计已经识别出低效之处。


阶段 4:报告结果

报告架构
字段描述
source审计报告路径或目标文件
findings_total审计发现总数
fixes_applied成功保留的修复
fixes_discarded因失败而丢弃的修复及原因
fix_details[]每项修复:发现类型、文件、修复前后说明

配置

Options:
  # Source
  audit_report: "docs/project/persistence_audit.md"
  target_file: ""               # Alternative to audit report

  # Verification
  run_tests: true

  # Scope
  fix_types:                    # Filter which types to fix
    - n_plus_one
    - redundant_fetch
    - over_fetching
    - unbounded_query

错误处理

错误原因解决方案
没有审计发现未运行 ln-651 或未发现问题报告“没有可优化的发现”
ORM 专属语法未知 ORM查询 Context7/Ref 获取 ORM 文档
需要迁移添加索引需要迁移记录为手动步骤,并跳过

参考

  • ../ln-651-query-efficiency-auditor/SKILL.md(配套工具:发现问题)
  • shared/references/ci_tool_detection.md(测试检测)

完成定义

  • 已从审计报告或目标文件扫描中加载发现的问题
  • 已按优先级处理修复(先处理 N+1,然后是冗余、过度获取和无界查询)
  • 每项修复均已应用,并通过保留或丢弃进行处理:测试通过 → 保留;测试失败 → 丢弃
  • 修复未引入新的查询低效问题
  • 已返回报告,其中包含发现的问题总数、已应用的修复数和已丢弃的修复数

版本: 1.0.0 最后更新: 2026-03-08

评论

支持 Markdown