ORM之select_related 性能相关

select_related :                                                  

一次性取到值,不会发额外的sql请求

作用:查询主动做连表

q = models.UserInfo.objects.all().select_related(‘ut’,‘gp’) 
#ForginKey的字段名
#3张表做关联

for row in q:
  print(row.name,row.ut.title)

 连表,性能会差,用户量大就慢。

   对大公司而言,要速度。访问量大,就不用外键。

ForginKey节省硬盘空间,但是之后查询的时候,速度会慢的代价。

prefetch_ralated:
不做连表,做多次查询
q = models.UserInfo.objects.all().prefetch_ralated('ut')
#2次sql查询,都是单表查询
#django内部,ut_id = []

for row in q:
  print(row.id,row.ut.title) #不连表,查另外一张表

 



转载于:https://www.cnblogs.com/catherine007/p/8893896.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值