用途:对 Django 代码做性能审查,聚焦可验证的 ORM 与数据库查询问题,而非泛泛的优化建议。适用于怀疑存在 N+1 查询、无界查询集、缺失索引或其他数据库瓶颈的场景。
主要能力:按影响分级组织问题。N+1 查询(严重)——循环中访问关联字段导致查询随数据量倍增,需用 select_related/prefetch_related,或在序列化器中改用 annotate;无界查询集(严重)——列表接口未分页、未用 iterator() 流式处理、对无界查询集调用 list(),会导致内存耗尽;缺失索引(高)——大表上用于 filter() 或 order_by() 的字段未建索引,可用 db_index 或 Meta.indexes 复合索引;循环写入(高)——循环中 create()/save()/delete(),应改用 bulk_create、update()、bulk_update 或查询集 delete();低效模式(低)——如 count() 与 exists()、len() 与 count() 等,通常不值得报告。
使用方式:先追踪数据流(视图→查询集→模板/序列化器→循环访问),搜索代码库中已有的优化,核实数据量,确认是否为高频路径,排除缓存等缓解措施;无法完成全部验证则不报告。输出按文件/组件给出摘要与逐条发现,含位置、问题、验证过程、证据与修复建议;无问题时应说明已检查内容。
限制:不报告测试文件、仅管理后台视图、管理命令、迁移文件、一次性脚本、被禁用特性开关后的代码、小于 1000 行且不会增长的表、冷路径代码及微优化。需避免误报:查询集变量赋值、单次 list() 调用、单对象取关联字段(最多算低)均非 N+1;风格偏好不算性能问题。该技能不能替代针对具体环境的验证、测试或专家审查;若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。