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、外键产生的原因

    节约硬盘空间

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

  • 相关阅读:
    设计模式----单例模式
    C++ 派生类
    C++ 操作符
    构造,清理,拷贝和移动
    php的yii框架开发总结10
    php的yii框架开发总结9
    php的yii框架开发总结8
    php的yii框架开发总结7
    php的yii框架开发总结6
    php的yii框架开发总结5
  • 原文地址:https://www.cnblogs.com/wt7018/p/11553636.html
Copyright © 2011-2022 走看看