Django查询性能:过滤 vs 外键集合查找

3

我想知道在Django中哪一个查询更快,如果有的话。我有一个Location模型和一个User模型。用户是以外键方式关联到位置(Location)的,所以每个位置(Location)可以有一个'locationuser_set'属性。

如果我有成千上万个用户,哪个查询更快呢?

查询1:

location = Location.objects.get(id=<id>)
users = location.user_set.all()

查询2:

users = User.objects.filter(location_id=<id>)
1个回答

5

查询2与查询1的第二行完全相同。但由于查询1还包括第一行,即执行单独的位置查找,因此它必然较慢。

如果您不需要实际位置对象,则选择查询2肯定是更好的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接