Django开发中关联查询优化(django-debug-toolbar)

当我们需要关联查询的时候,发现页面加载数据非常慢,又不知道什么原因,我们可以安装一个叫django-debug-toolbar的插件来帮助我们分析。

一、安装django-debug-toolbar

  1. 在pycharm终端输入,下载安装django-debug-toolbar
    pip install django-debug-toolbar
    
  2. 在原来项目的配置文件中,需要修改几个地方
    1. 在setting.py文件中的INSTALLED_APPS中加上红框中的语句(位置随意)
      Django开发中关联查询优化(django-debug-toolbar)_第1张图片
    2. 接着在setting.py文件中的MIDDLEWARE中加上红框中的语句(放在最前面,最先调用,最后结束)Django开发中关联查询优化(django-debug-toolbar)_第2张图片
    3. 因为django-debug-toolbar 前端是使用js实现的,所以要引入jQuery库Django开发中关联查询优化(django-debug-toolbar)_第3张图片
    4. 最后在urls.py文件最后加上红框中的语句,导入需要导入的包,导入的时候注意一下,不要导入错了!Django开发中关联查询优化(django-debug-toolbar)_第4张图片
      Django开发中关联查询优化(django-debug-toolbar)_第5张图片
      Django开发中关联查询优化(django-debug-toolbar)_第6张图片
  3. 运行我们的程序,在浏览器的右边可以看见toolbarDjango开发中关联查询优化(django-debug-toolbar)_第7张图片

二、检查sql语句

  1. 可以发现在执行关联查询的时候,每一条语句又单独做了一次请求,一共有5条相似的请求。
    Django开发中关联查询优化(django-debug-toolbar)_第8张图片

  2. 那么,如何把5条相似的请求和成一个请求完成呢?在Django框架中,一对一或者多对一的关联查询中,在语句最后加上select_related即可

    records = record.objects.filter(is_deleted=0).select_related
    

再看sql的详细执行语句,就没有相似查询了。
Django开发中关联查询优化(django-debug-toolbar)_第9张图片
如果是多对多查询,则使用prefetch_related(预抓取)

你可能感兴趣的:(Python基础,django,数据库)