SuperAPI AI 工具集

query-performance-safety

编程与开发

查看项目

更新于 10-15 21:11

技能介绍

用途:这是一份查询性能安全规范,当代码涉及数据库或远程服务的批量查询时触发,用于防止 N+1、IN 子句过长、递归无界等高频性能陷阱。它关注查询效率,租户隔离由 multi-tenant-safety 负责。

主要能力:覆盖六类陷阱。一是循环内调用单条查询导致 N+1,正确做法是先收集外键 ID、一次 IN 查询落到 Map、循环内只查 Map;Repository 的批量方法需与单条方法成对提供;隐式 N+1 指循环内调用 convertToDTO 等辅助方法,可用两阶段处理、场景化轻量 DTO、批量版 convertToDTOs 修复。二是 IN 子句不分批,建议固定 IN_BATCH_SIZE = 500 分批查询后合并,聚合 SUM/COUNT 同样分批。三是 BFS/递归遍历无总节点上限,需同时设 MAX_DEPTH 与 MAX_TOTAL_NODES,截断时 log.warn 留痕。四是嵌套 service 调用造成隐式重复查询,应提取共享底层方法只跑一次。五是大表 WHERE/IN 缺失索引,需对照实体 @Index 与 Flyway 迁移脚本并用 EXPLAIN 验证。六是缓存反模式,@Cacheable 的 key 应稳定且多租户场景包含 tenantId,写操作配套 @CacheEvict。

使用方式:作为代码评审与实现时的检查清单使用,逐项核对循环内查询、IN 分批、递归上限、重复查询、索引与缓存 key。

适用场景:Java/Go/Python/Node.js 等后端批量查询、列表与统计接口、递归结构遍历。

限制:资料未提供具体安装命令、收费与平台信息;多语言完整实现见 references/multi-lang-examples.md。