1.分页查询之前先按索引排序
我们经常会上一些小说网站看小说,他们总是会把最近更新了的小说放在最前面,也就是第一页,而很久没更新的就放在后面了。那么这样网站是如何实现的呢?我的猜想有一张小说表,表里面一个last_update表示最后更新字段,并且对这个字段建立了索引,按last_update从大到小排序之后再按需求的页面大小进行分页。
那为什么分页查询总是要排序呢?
由上面的例子可以看出,这个是需求导致的,而且还有效率因素。下面举例说明:

表的描述如下:

只有id主键索引。
假设我们需要前三条数据,执行sql【explain select * from t1 limit 3;】

因为我们没有进行排序,mysql不知道要哪前三条,是id大呢,还name大呢?,mysql晕了,只能进行全表扫描来获取数据表的前三条数据了。所以范围类型为ALL。
当我们进行排序之后情况如何。执行sql【explain select * from t1 order by id desc limit 3;】

本文介绍了MySQL分页查询的优化方法,包括避免使用offset,利用索引进行排序,以及如何实现上一页、下一页和跳页功能。强调了在分页时先按索引排序的重要性,解释了offset的性能问题,并提供了替代解决方案。
最低0.47元/天 解锁文章
478

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



