Django查询性能过滤与外键集查找

时间:2016-03-09 18:19:14

标签: python mysql django performance

我想知道Django中哪个查询更快。我有一个位置模型和一个用户模型。用户外键键入位置,因此每个位置都可以具有“locationuser_set”属性。

如果我拥有数千名用户,哪一项更快?

查询1:

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

查询2:

users = User.objects.filter(location_id=<id>)

1 个答案:

答案 0 :(得分:4)

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

如果你不需要实际的位置对象,那么2肯定是要走的路。