zoukankan      html  css  js  c++  java
  • django-ORM相关代码及其sql执行次数

    1.普通情况:通过log可以看出,这种情况下,访问了1次数据库

    def test(request):
        """测试连表"""
        users = rbac_models.UserInfo.objects.all()
        for user in users:
            print(user.username)
            print(user.password)
            print(user.nickname)
            print(user.email)
    
        return HttpResponse("OK")

    控制台:

    2.普通情况:访问外键,可以看出,访问了4次数据库

    def test(request):
        """测试连表"""
        users = rbac_models.UserInfo.objects.all()
        for user in users:
            print(user.username)
            print(user.usertype.name)
        return HttpResponse("OK")

    3.使用selected_related,主动连表查询,可以看出,访问了1次数据库

    def test(request):
        """测试连表"""
        users = rbac_models.UserInfo.objects.all().select_related("usertype")
        for user in users:
            print(user.username)
            print(user.usertype.name)
        return HttpResponse("OK")

    4.连表降低性能,我们可以使用被动连表查询prefetch_related,可以看到访问了数据库2次,查询n个外键字段时,访问n+1次数据库.

    def test(request):
        """测试连表"""
        users = rbac_models.UserInfo.objects.all().prefetch_related("usertype")
        for user in users:
            print(user.username)
            print(user.usertype.name)
        return HttpResponse("OK")

     

  • 相关阅读:
    CSS property
    CSS animation
    React 嵌套渲染对象,内部对象会是 undefined 报错的解决办法。
    flex 属性
    margin 折叠
    CSS经典布局——双飞翼布局
    CSS经典布局——圣杯布局
    CSS 正常流
    CSS selectors 选择器
    CSS function
  • 原文地址:https://www.cnblogs.com/jec1999/p/7642944.html
Copyright © 2011-2022 走看看