首页 > 其他 > 详细

ORM相关性能

时间:2017-09-20 20:05:24      阅读:295      评论:0      收藏:0      [点我收藏+]
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相关性能

原文:http://www.cnblogs.com/guomeina/p/7563370.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!