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")

     

  • 相关阅读:
    网络优化改进
    图像识别和卷积神经网路案例的实现
    卷积神经网络和图像识别
    ANA网络分析
    大数阶乘
    HDU 1002 A + B Problem II (大数加法)
    HDU 1232 畅通工程 (并查集)
    HDU 1231 最大连续子序列 (dp)
    HDU 2546 饭卡 (dp)
    HDU 1203 I NEED A OFFER! (dp)
  • 原文地址:https://www.cnblogs.com/jec1999/p/7642944.html
Copyright © 2011-2022 走看看