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)
    	
    

      

  • 相关阅读:
    数梦工场:新思维、新技术下的互联网+政务
    计算成就价值_数据实现梦想——达科在DT时代转型历程的分享
    AliSQL开源功能特性
    mysql 索引的使用
    sql经典面试题
    数据库理论知识点
    sql语句面试练习
    数据库范式的选择使用
    sql常用语句
    数据库范式
  • 原文地址:https://www.cnblogs.com/linzetong/p/8694607.html
Copyright © 2011-2022 走看看