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
connection.queries
from django.db import connection if stype=='b_other': counts = ArticleMmOther.objects.all().count() arts = ArticleMmOther.objects.values(