django-orm-query-optimization
Optimize Django ORM query loading by fixing N+1 queries, duplicate related-object queries, over-fetching, serializer/template query loops, and inapp…
它会碰到什么
扫了多少2 个文本文件,5 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
Django ORM Query Optimization
Use this skill for query-count and object-loading problems. The usual target is an N+1 pattern where each rendered row or serialized object triggers more database work.
Workflow
- Prove the query pattern.
- Capture query count and duplicate SQL for the slow path.
- Identify the loop, serializer field, template access, admin display, or model property triggering related queries.
- Choose the loading strategy.
- Use
select_related()for single-valued relationships:ForeignKeyandOneToOneField. - Use
prefetch_related()for many-valued relationships: reverse FK and many-to-many. - Use
Prefetch()when the related queryset needs filters, ordering, annotations, or nestedselect_related(). - Use
values()orvalues_list()when model instances are unnecessary. - Use
only()ordefer()only when large columns are truly unused.
- Keep access consistent.
- If you prefetch
items, do not later callitems.filter(...)and expect the prefetch cache to help. - If using
iterator()withprefetch_related(), providechunk_size. - Avoid putting broad prefetches into default managers unless every caller needs them.
- Add a focused regression check when useful.
- Use a query-count assertion around the exact view or serializer path.
- Avoid brittle global query-count tests.
See [relationship-and-column-loading.md](references/relationship-and-column-loading.md) for examples and review cues.
Anti-Patterns
- Adding
prefetch_related()to every queryset without checking memory. - Using
only()and then touching deferred fields in a loop. - Optimizing a queryset but leaving serializer method fields to issue per-row queries.
- Hiding queries in
__str__(), model properties, template includes, or admin list methods.
Verification
Show the query count and duplicate-query pattern before and after, plus any wall-time or memory change.
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
它属于哪个仓库
星标★ 1,027
本站分层T1
该仓技能数1910
原文件路径
plugins/LVTD-LLC/skills/skills/django-orm-query-optimization/SKILL.md