Child.objects.select_related("parent").filter(parent=parent_instance)Child.objects.filter(parent=parent_instance).select_related("parent")

哪一个更省时间?

我不确定哪一个查询次数最少并提高了性能

推荐答案

两者都将导致相同的查询.需要从not.select_related(…) [Django-doc].prefetch_related(…) [Django-doc]才能过滤.如果您对相关项进行筛选,它将只进行联接.

.select_related(…)的 idea 只是将相关模型添加到SELECT子句中,并防止在获得由查询集产生的Child中的任何一个的.parent属性时进行查询.

根据用例的不同,您可能不需要在子句中 Select 父级,例如,如果您只渲染Child个对象的字段,在这种情况下,最有效的方法是:

Child.objects.filter(parent=parent_instance)

或者:

parent_instance.child_set.all()

Mysql相关问答推荐

MySQL添加表会将&@@&qot;追加到表名

含有子查询的MySQL函数出现语法错误

从单行中获取最大日期的最佳方法

MySQL - 事务绑定多个存储过程调用和回滚的简单方法?

时间戳上滚动窗口的 SQL 计数不同

如何同时从同一个表中 Select 从 SQL 表中删除行

仅当其他行相等时才 Select 行值

MySQL 每组最大 n 只适用于多行

是否可以在一个查询中将字符串附加到许多匹配的行

保存SQL查询的中间结果

mysql 5.5;可以从记录中排除表吗?

如何根据特定条件从mysql数据库中 Select 查询

更改整数时间到日期格式 MM/DD/YY,如 python 中的 datetime.fromtimestamp

加快 MySQL 中的行计数

MySQL函数查找两个日期之间的工作日数

docker-entrypoint-initdb 中的 MySQL 脚本未执行

如何在 python 中逐行获取 MySQL ResultSet

当运行 UPDATE ... datetime = NOW();所有更新的行都会有相同的日期/时间吗?

如何从命令行调用带有参数的mysql存储过程?

"SELECT COUNT(*)" 很慢,即使有 where 子句