美文网首页
大数据量下,如何优化mysql的分页查询

大数据量下,如何优化mysql的分页查询

作者: handsomePeng | 来源:发表于2019-02-27 22:45 被阅读0次
/********* 查询第1001页的10条数据 ********/
# 原生sql语句(limit offset,rows)
select * from auth_user limit (1001-1)*10,10;

# django orm语句(与上述原生sql等价)
User.objects.all()[10000,10010]

如上述,许多网站的分页功能的底层实现就是依赖前端给后端传来一些参数,比如起始页和页面大小,来结合limit控制分页。

但是,在大数据量下,就会出现查询效率问题!!!因为上述语句实际底层执行是从第一行开始找到10010行,再抛弃前面的10000行。故当用户往后翻到1001页时,偏移量offset就会很大(10000),实际执行效率很慢。

一般地,替代方法如下:where语句设置起始位,limit控制行数。

select * from auth_user where id >= 10000  limit 10;

User.objects.filter(id__gte=10000)[0,10];

相关文章

网友评论

      本文标题:大数据量下,如何优化mysql的分页查询

      本文链接:https://www.haomeiwen.com/subject/ifiquqtx.html