ORM相关性能
Posted sunnymn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORM相关性能相关的知识,希望对你有一定的参考价值。
user_list = models.UserInfo.object.all()
for row in user_list:
#只能取当前表数据,否则性能会非常低
select_related,主动连表查询【FK】
user_list = models.UserInfo.objects.all().select_related("FK字段")
for row in user_list:
#只能取当前表数据和FK表关联字段
user_list = models.UserInfo.objects.values(...)
for row in user_list:
#只去取当前表数据和FK表关联字段
===》 连表降低性能
prefetch_related:
user_list = models.UserInfo.objects.all().prefetch_related(‘FK字段‘)
#查询用户表models.UserInfo.objects.all() 1000个obj
#把用户表中所有的ut_id拿到,用户类型ID [1,2,3]
#select * from UserType where id in [1,2,3]
user_list = models.UserInfo.objects.all().prefetch_related(‘ut‘,‘xx‘)
for row in user_list:
print(row.name, row.pwd, row.ut.caption)
补充:
#[obj,obj,obj]
user_list = models.UserInfo.objects.all().only(‘name‘) # 只取某个字段
user_list = models.UserInfo.objects.all().defer(‘name‘) # 排除当前字段
for row in user_list:
print(row.pwd)
以上是关于ORM相关性能的主要内容,如果未能解决你的问题,请参考以下文章