第3章 ORM查询与性能 章节摘要:模型建好了,接下来是日常使用频率最高的动作——查询。本章覆盖 QuerySet 的核心心智模型(惰性求值与链式构造)、常用查询 API 全景、写操作与事务,最后集中治理第一个真正的性能大坑:N+1 查询。这一章的功底决定项目上线后的响应速度。 学习目标 解释 QuerySet 惰性求值机制,说出触发真正执行 SQL 的时机 熟练使用过滤、排除、跨关系查询与聚合 掌握创建、更新、删除与事务边界 用 selectrelated 与 prefetchrelated 消除 N+1 查询 核心概念速览 查询集是"查询的描述",不是"查询的结果"——这是 ORM 一切行为的钥匙。 项目当前状态 模型已迁移落库。
章节摘要:模型建好了,接下来是日常使用频率最高的动作——查询。本章覆盖 QuerySet 的核心心智模型(惰性求值与链式构造)、常用查询 API 全景、写操作与事务,最后集中治理第一个真正的性能大坑:N+1 查询。这一章的功底决定项目上线后的响应速度。
查询集是"查询的描述",不是"查询的结果"——这是 ORM 一切行为的钥匙。
模型已迁移落库。本章为墨迹博客写出首页列表、文章详情、热门标签等查询,并在上线前把列表页的 101 条 SQL 压成 2 条。
查询这章之所以紧跟着建模讲,是因为它是项目日常运转中执行频率最高的代码路径——上线后每天成千上万次请求,绝大多数都在跑本章写的查询语句。一条低效查询平时看不出来,流量高峰时就是雪崩的起点。本章前半讲"怎么写对",后半讲"怎么写省",两条腿都要有:只会写对的查询,项目能跑;会写省的查询,项目才能扛住真实的流量。性能治理放在功能还没写完的阶段提前讲,就是为了让你从一开始就养成带着成本意识写查询的习惯。
惰性求值、链式过滤、跨关系查询、聚合分组、写操作与事务。
N+1 问题的成因定位、两种预取方案的原理与选择、查询计数的度量习惯。
会用(3.1 查询全景) | v 用得省(3.2 性能治理)──> 第4章 视图接过查询结果去渲染