Django数据检索性能

时间:2015-11-14 19:14:01

标签: python django python-3.x django-models

我有四种模式:

用户 - >有一个档案

个人资料 - >有一个居民

居民 - >属于许多个人资料

数据库 - >属于一个居民

鉴于用户对象,我想检索间接属于用户对象的数据库对象。

我已经可以按照我的数据库架构执行此操作:

profile = user.profile
dweller = profile.dweller
database = Database.objects.get(dweller_id=dweller.id)

它正常工作但是我想知道这是否是最优雅和更好的性能方式,我的意思是,当python执行 profile = user.profile 时,配置文件对象来自数据库查询所有居民数据(通过JOIN),或仅当python执行 dweller = profile.dweller 代码行(使用另一个JOIN)时才检索居民数据?

我担心的是,如果每个代码行向Database提交一个新查询,如果我可以使用QuerySet来浓缩这个查询,我不知道会更好吗?如果是这样的话,我怎么能这样做?这会改善性能吗?多次连续查询的连接握手可能会减慢我的整个过程?

Django新手在这里,谢谢你。

1 个答案:

答案 0 :(得分:1)

您的代码将针对profiledwellerdatabase执行3个单独的查询。如果您不需要其他模型,可以将其减少为包含多个JOIN的单个查询:

database = Database.objects.get(dweller__profile__user=user)

lookups that span relationships上的文档对此进行了详细说明。

相关问题