SuperAPI AI 工具集

cc-query-performance-safety

编程与开发

查看项目

更新于 10-16 05:06

技能介绍

用途:当代码涉及数据库或远程服务的批量查询时,防止 N+1、IN 子句过长、递归无界等高频性能陷阱。与 cc-multi-tenant-safety 配合,本技能关注查询效率,租户隔离遵循后者。

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

使用方式:作为技能在代码评审或生成时触发,按检查清单逐项核对,包括循环内 findById、SQL 次数与列表大小是否解耦、IN 是否分批、递归是否有总数上限、索引是否命中、缓存 key 是否稳定等。

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

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