ORM相关性能

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)
时间: 2024-10-08 00:58:51

ORM相关性能的相关文章

认识loadrunner及相关性能参数

认识loadrunner及相关性能参数 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期. LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能. 对象 LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和

hashCode相关性能优化

学习下hashMap中用到的关于hashCode性能优化技巧,作为笔记,为之后并发深入作基础. 1.关于提高性能的hash算法 在被模的位数为2的n次方时,用位与代替效率低下的模运算.位与效率相比模运算效率更高. 例:15%4=3,代替为 15 & 3=1111 & 0011=0011=3 hashmap中在求得某个key后,需要找到在哪个Entry数组下标的运算如下: static int indexFor(int h, int length) { return h & (len

python-django框架-orm相关继续&ORM的增删改查操作_20191110

python-django框架-orm相关继续 orm不常用字段: 1,BigIntegerField(IntegerField):可以存手机号,也可以使用字符串存储手机号, - 长整型(有符号的) -9223372036854775808 - 9223372036854775807 2,BooleanField(Field) - 布尔值类型 3,DateTimeField(DateField) - 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 4,时间间

ORM相关操作

一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误. <4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 <5> values(*field): 返回

Mego(1) - NET中主流ORM框架性能对比

从刚刚开始接触ORM到现在已有超过八年时间,用过了不少ORM框架也了解了不少ORM框架,看过N种关于ORM框架的相关资料与评论,各种言论让人很难选择.在ORM的众多问题中最突出的问题是关于性能方面的问题,因此我在看了国外的一遍文章(Dapper vs Entity Framework vs ADO.NET Performance Benchmarking)后受到启发,在这个文章的基础上扩展了测试用例分享给大家. 模型准备 数据初始化 测试用例说明 测试结果 结果分析 模型准备 用于测试是模型是基

Django ORM相关操作

一般操作 官方文档链接 常用必会操作(13条) <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误. <4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 <5> values(*field): 返回一个Value

async/await 的基本实现和 .NET Core 2.1 中相关性能提升

前言 这篇文章的开头,笔者想多说两句,不过也是为了以后再也不多嘴这样的话. 在日常工作中,笔者接触得最多的开发工作仍然是在 .NET Core 平台上,当然因为团队领导的开放性和团队风格的多样性(这和 CTO 以及主管的个人能力也是分不开的),业界前沿的技术概念也都能在上手的项目中出现.所以虽然现在团队仍然处于疾速的发展中,也存在一些奇奇怪怪的事情,工作内容也算有紧有松,但是总体来说也算有苦有乐,不是十分排斥. 其实这样的环境有些类似于笔者心中的"圣地" Thoughtworks 的

Django框架详细介绍---ORM相关操作---select_related和prefetch_related函数对 QuerySet 查询的优化

Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化 引言 在数据库存在外键的其情况下,使用select_related()和prefetch_related()很大程度上减少对数据库的请求次数以提高性能 1.实例准备 模型: from django.db import models # Create your models here. # 书 class Book(models.Model): title = models.C

django的orm相关知识

扩展默认的auth_user表 想要加一个存储用户手机号的字段 我们可以通过继承内置的 AbstractUser 类,来定义一个自己的Model类. from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser):#继承AbstractUser """ 用户信息表 """ nid = models.AutoField(primary_key=True