我想知道Django中哪个查询更快。我有一个位置模型和一个用户模型。用户外键键入位置,因此每个位置都可以具有“locationuser_set”属性。
如果我拥有数千名用户,哪一项更快?
查询1:
location = Location.objects.get(id=<id>)
users = location.user_set.all()
查询2:
users = User.objects.filter(location_id=<id>)
答案 0 :(得分:4)
查询2完全等同于查询1的第二行。但由于查询1还包括第一行,它执行单独的位置查找,因此速度必然较慢。
如果你不需要实际的位置对象,那么2肯定是要走的路。