Django 提高查询效率

作者: 思考的虫子 | 来源:发表于2019-08-22 05:30 被阅读0次

Django prefetch_related and select_related

Created: Aug 02, 2019 9:40 PM
Last Edited Time: Aug 03, 2019 5:11 PM
Status: Draft

Description

Boost ORM performance with prefetch_related() and select_related()

1. Preparation

Django-extension

  1. Use Django-extension to show SQL and Execution time

     pipenv install django-extensions --dev
    
  2. Add to INSTALL_APPS

     # proj.settings.dev.py
     INSTALLED_APPS = INSTALLED_APPS + ['django_extensions']
    
  3. Enter Django Shell with SQL printed

     ./manage.py shell_plus --print-sql --settings proj.settings.dev
    

Change LOGGING settings

good for server log watching, not recommended for Django interactive console.

# proj.settings.dev.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        }
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'DEBUG',
        }
    },
}

select_related

用于一对一,或者多对一(foreignkey field)总之是对一就好了,找出来加到查询结果了面成为额外字段

  • 用于一对一,或者多对一(foreignkey field)总之是对一就好了,找出来加到查询结果了面成为额外字段

prefetch_related

用于多对一(foreignkey 的related 字段)或者多对多 ManyToMany,增加的属性是一个列表

Other Finding

  • Model.objects.all() will SELECT all it related object as well, lead to a multiple SELECT
  • So we should use Model.objects.values('', '',...) to skip the foreignkey field

相关文章

  • Django 提高查询效率

    Django prefetch_related and select_related Created: Aug 0...

  • 高级1、MySQL高级用法-索引20180515

    索引 主要目的:提高查询效率,对需要经常查询的字段添加索引,可有效提高查询效率。 简介 索引是一种特殊的文件(In...

  • Django启用管理后台

    为了提高开发效率,Django自带了后台管理模块。Django1.11默认情况下 Django 管理后台已经开启创...

  • 索引如何提升查询效率

    MySQL的索引是如何提高查询效率的? 一.索引是什么? 索引是数据库中用来提高查询效率的技术,类似于目录。如果不...

  • 提高MYSQL查询效率

    1、能使用(NOT)EXISTS替代(NOT)IN的地方,尽量使用EXISTS;使用EXISTS替代DISTINCT。

  • Django表单使用介绍

    Django版本:2.1.3Django表单非常强大,熟悉后可以大大提高工作效率。 Django表单分为两种使用方...

  • 第十一节、索引

    什么是索引? 索引的出现就是为了提高数据查询的效率。 索引的常见模型 索引的出现时为了提高查询效率,但是实现索引的...

  • MYSQL数据库索引

    了解过MYSQL数据库的人,都知道索引能提高查询效率。那么为什么索引能提高查询效率?小编将自己的一些看法分享给大家...

  • 四、讲深入浅出索引(上)

    索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。 4.1 索引的常见模型 索引的出现是为了提高查询效率...

  • MySQL中的索引——概念篇

    使用索引的目的 使用索引的目的是提高数据库查询的效率。索引是怎么提高数据库查询的效率的呢?举个通俗的例子,查字典。...

网友评论

    本文标题:Django 提高查询效率

    本文链接:https://www.haomeiwen.com/subject/uncgsctx.html