Django很强大,发现了一个很有用的功能
问题背景:
Python资源共享群:484031800
百万级数据,做前端页面分页,出现打开网页第一次打开很慢,基本要好几秒,第二次打开速度较快,基本是秒开
代码写了3个查询语句:
1、查询表中数据个数,用了count()方法
2、根据[start:end]进行切片,实现的为limit查询,每次返回15条数据
3、遍历range(start,end),通过列表推导式,根据惟一索引进行查询,也是15条数据
counts = ArticleMmOther.objects.all().count()
#arts = ArticleMmOther.objects.values("id","title")[start:end]
arts = [ArticleMmOther.objects.values("id","title").get(id=i) for i in range(start, end)]
paginator = Paginator(range(counts), 15)
我要探索2个问题:
1、这3条查询语句,中间有一个查询比较耗时,我的前端页面在访问页面的时候,要过好几秒才能打开网页,对用户不友好,但是我现在不知道哪个最耗时,如何把最耗时的查询操作找出来?
2、对于每次返回15条数据,我用了两种方式来写,一种是[start:end]切片limit查询,一种是从range(start,end)遍历15次,每次都是根据索引进行惟一查询,比较这两种查询谁更快?
好了,SQL执行时间可以在Navicate中进行查看,不过我这里要获取的是orm查询的执行时间,可以自己在查询执行前和执行后获取时间相减计算执行时间,不过自己计算也比较麻烦了,这最近看相关技术文章发现,django提供了一个能返回orm查询时间的api,我们调用可以直接查看每次查询的耗时,如下方代码所示
from django.db import connection

本文介绍了在Django中遇到的性能瓶颈问题,通过分析ORM查询时间,发现count()方法在处理百万级数据时耗时严重。通过调整策略,将count查询改为固定值,并对比limit查询与惟一索引查询速度,优化了前端页面加载速度,实现了秒开效果。同时强调了Django提供的查询报告API在性能优化中的重要作用。
最低0.47元/天 解锁文章
707

被折叠的 条评论
为什么被折叠?



