zoukankan      html  css  js  c++  java
  • ORM 效率补充

    1、only  defer  

    only: 获取数据表中某列或多列的值,注意获取的是对象,如果查询字段不是括号内的,效率反而变低

    defer: 获取除了某列或某几列的数据,注意获取的是对象

    User.objects.values('id', 'name')
    User.objects.values_list('id', 'name')
    
    ret = User.objects.only('id', 'name')
    for i in ret:
        print(i.id, i.nme)

    2、selected_related

    进行跨表查询的时候,会先进行连表,这里的db是外键的字段

    # 查询用户的姓名和部门名称,先链表再查询
    result = User.objects.all().seleted_related('dp')
    for item in result:
        print(item.name,item.dp.title)

    多用于 one2one 或 foreginkey

    缺点:链表次数过多,反而会减低查询效率

    3、prefecth_related

    进行来两次查询,先查询一次,再查询和要查询数据有关的数据

    result = User.objects.all().prefetch_related('dp')
    for item in result:
        print(item.name,item.dp.title)

    多用于 mang2many

    4、外键产生的原因

    节约硬盘空间

    当数据量比较大的时候,不要使用外键,允许数据出现冗余

  • 相关阅读:
    keepass口令管理实践
    openssl实践
    Nmap
    SSH
    Wireshark 实践
    网站设计
    python database
    python gui
    Excel数据统计与分析
    2020-2021学期20202401金丁《网络空间安全专业导论》第十三周自学总结
  • 原文地址:https://www.cnblogs.com/wt7018/p/11553636.html
Copyright © 2011-2022 走看看