首页 > 解决方案 > 查询 ManyToManyField 速度的更好方法是什么?整个对象还是只有 id?

问题描述

我正在尝试确定查询ManyToManyField速度的最有效方法。

我有 2 个我知道的选项:

  1. 将整个对象添加到字段
  2. 仅将 id 添加到字段中

如果我添加对象,显然使用on_delete=models.CASCADE,我会获得巨大的好处,但我担心添加它可能会降低查询速度,因为它会获取整个对象,其中很多都是这样。

而只有 id,它只是一个 int,所以我认为它不那么重,而且速度更快。

只为了速度,你有什么建议?

标签: pythondjangodjango-modelsdjango-queryset

解决方案


Django 提供prefetch_relatedManyToMany以使您对字段或反向字段的查询更快ForeignKey
select_related用于普通ForeignKey字段。


推荐阅读