You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django查询性能优化:两种select_related写法哪个耗时更短?

Django中两种select_related与filter顺序写法的性能对比

这两种写法的性能完全一致,查询次数和耗时没有任何区别,原因如下:

  • Django的QuerySet是惰性求值的:所有filter、select_related这类方法只是在构建查询逻辑,并不会立刻执行SQL。只有当你实际使用QuerySet(比如遍历、调用first()/all()等)时,才会生成最终的SQL语句并发送给数据库。
  • 方法调用顺序不影响最终SQL:不管是先调用select_related("parent")还是先调用filter(parent=parent_instance),最终生成的SQL都是相同的——通过INNER JOIN关联Parent表,同时过滤出Child表中关联指定parent_instance的记录,只会执行1次数据库查询。

举个实际生成的SQL例子(假设Child外键字段为parent_id,parent_instance的id为1):

SELECT "child"."id", "child"."parent_id", "parent"."id", "parent"."name" -- 示例字段
FROM "child"
INNER JOIN "parent" ON ("child"."parent_id" = "parent"."id")
WHERE "child"."parent_id" = 1;

所以无需纠结这两种写法的顺序,它们在性能表现上没有差异。

内容的提问来源于stack exchange,提问作者Vitthal Mane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:42:31