zoukankan      html  css  js  c++  java
  • Django数据库 相关之select_related/prefetch_related

    	- 性能相关
    		user_list = models.UserInfo.objects.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字段')
    	
    			# [obj,obj,obj]
    			# 1.查询用户表models.UserInfo.objects.all() 1000 select * from UserInfo ;
    			# 2.把用户表中所有的ut_id拿到, 用户类型ID [1,2,3]  select * from UserType where id in [1,2,3]
    			# 3.把用户表中所有的xx_id拿到, 用户类型ID [21,21,31]   select * from xx where id in [21,21,31]
    
    			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')   # 只取某个字段 select name from userinfo 
    			# user_list = models.UserInfo.objects.all().defer('name')  # 排除当前字段	
    			# for row in user_list:
    			#     print(row.pwd)
    	
    

      

  • 相关阅读:
    SQL注入方法之:获取列名
    手把手教会你模拟退火算法
    我的G++编译选项
    编译器优化误解程序员的意思
    ZKW线段树
    扩展欧几里得算法
    快速幂
    乘法取模
    莫队算法良心讲解
    高精度模板
  • 原文地址:https://www.cnblogs.com/linzetong/p/8694607.html
Copyright © 2011-2022 走看看