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)
    	
    

      

  • 相关阅读:
    Java之lambda表达式
    修改IntelliJ IDEA的java编译版本
    no route to host解决方案、Failed to start LSB: Bring up/down networking的问题解决方案
    spark转换集合为RDD
    spark编写word count
    nexus
    spark 源码安装
    spark shell
    maven
    git
  • 原文地址:https://www.cnblogs.com/linzetong/p/8694607.html
Copyright © 2011-2022 走看看