当我们需要关联查询的时候,发现页面加载数据非常慢,又不知道什么原因,我们可以安装一个叫django-debug-toolbar的插件来帮助我们分析。
一、安装django-debug-toolbar
- 在pycharm终端输入,下载安装django-debug-toolbar
pip install django-debug-toolbar
- 在原来项目的配置文件中,需要修改几个地方
- 在setting.py文件中的INSTALLED_APPS中加上红框中的语句(位置随意)
- 接着在setting.py文件中的MIDDLEWARE中加上红框中的语句(放在最前面,最先调用,最后结束)
- 因为django-debug-toolbar 前端是使用js实现的,所以要引入jQuery库
- 最后在urls.py文件最后加上红框中的语句,导入需要导入的包,导入的时候注意一下,不要导入错了!
- 在setting.py文件中的INSTALLED_APPS中加上红框中的语句(位置随意)
- 运行我们的程序,在浏览器的右边可以看见toolbar
二、检查sql语句
-
可以发现在执行关联查询的时候,每一条语句又单独做了一次请求,一共有5条相似的请求。
-
那么,如何把5条相似的请求和成一个请求完成呢?在Django框架中,一对一或者多对一的关联查询中,在语句最后加上select_related即可
records = record.objects.filter(is_deleted=0).select_related('car')
再看sql的详细执行语句,就没有相似查询了。
如果是多对多查询,则使用prefetch_related(‘car’)(预抓取)