python-Django框架,分页以及数据库执行情况详细探究
2018-01-12 13:44
344 查看
1、django框架在list页面时候查询效率问题
django的list写法一般是先
list=xxx.objects.all()或者xxx.objects.filter(Q)
再将list,放进django自带分页对象
Paginator(list, limit),进行分页操作
刚开始以为先all,会将数据表所有记录全部select出来,再放进Paginator进行分页,效率会非常低。
查了网上,网上也有很多教程教你自己用python切片写高效分页。
其实全部对django一知半解搞错了。
正确的是:
django的queryset是懒查询,最后返回页面的时候才会真正的去执行sql查询,在一定要objects.all()的时候。django
默认会带上select...limit 21。除非代码里写死了取出all,再把all拿来复制,遍历操作,这样会执行全表查询。
其他时候select永远会加上limit分片或limit 21。所以完全不用担心和考虑django的列表页面的效率。django很成熟了,不
会范这种错误。
为了验证这个问题,我开启了mysql的sql日志实时输出。
详细方法,可参照其他大神的办法:http://blog.csdn.net/u014180504/article/details/73826679
执行结果:
在执行all的时候:
永远会带21
最厉害的是django里面判断你要真的取出数据来操作时候会真的全表查,如果只是取出queryset赋值,在数据最后返回页面才会
执行分片,或者limit 21。
django的list写法一般是先
list=xxx.objects.all()或者xxx.objects.filter(Q)
再将list,放进django自带分页对象
Paginator(list, limit),进行分页操作
刚开始以为先all,会将数据表所有记录全部select出来,再放进Paginator进行分页,效率会非常低。
查了网上,网上也有很多教程教你自己用python切片写高效分页。
其实全部对django一知半解搞错了。
正确的是:
django的queryset是懒查询,最后返回页面的时候才会真正的去执行sql查询,在一定要objects.all()的时候。django
默认会带上select...limit 21。除非代码里写死了取出all,再把all拿来复制,遍历操作,这样会执行全表查询。
其他时候select永远会加上limit分片或limit 21。所以完全不用担心和考虑django的列表页面的效率。django很成熟了,不
会范这种错误。
为了验证这个问题,我开启了mysql的sql日志实时输出。
详细方法,可参照其他大神的办法:http://blog.csdn.net/u014180504/article/details/73826679
执行结果:
在执行all的时候:
永远会带21
最厉害的是django里面判断你要真的取出数据来操作时候会真的全表查,如果只是取出queryset赋值,在数据最后返回页面才会
执行分片,或者limit 21。
相关文章推荐
- windows上面安装python以及用django框架做增删改查
- python3框架Django使用postgreSQL数据库简单实践
- Python的Django框架中的数据库配置指南
- Python框架之Django的数据库配置问题
- 合并多个python list以及合并多个 django QuerySet 的方法在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个 list 的情况。单纯从技
- Python3之Django Web框架分页多页码处理一
- Python3之Django Web框架分页多页码处理二
- PythonWeb开发Django框架学习(十一)使用框架自带Admin管理数据库数据
- Python3之Django Web框架首页分页处理升级版
- 数据库禁止模糊匹配的情况下实现模糊匹配以及分页展示
- 用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
- 用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库——unittest。 unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那
- Python的Django框架完成一个完整的论坛(1.settings.py源码以及解释)
- Python3之Django框架搭建详细步骤
- contos7.2 搭建 python pip uwsgi 以及安装 django 框架
- python Django框架的配置,以及用django搭建一个blog
- yii框架中,搜索的表单和后台执行,以及分页
- 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
- python-Django中设置操作shell时执行的数据库命令在控制台显示
- Python的Django框架中使用SQLAlchemy操作数据库的教程