前言:
由于今天处理mysql数据分页时,发现从1W数据中分页需要5s左右,速度实在太慢了,mysql使用的分页是limit
思路:
首先我们需要了解mysql中limit的执行逻辑,它的工作逻辑是先将查询的数据全部查询出来,然后再将其进行分页。
打个比方:数据库中有100W条数据,那么它就会先把100W数据全部查询出来,然后再进行分页。
所以,速度慢就是慢在了它查询那100W条数据上面了。
那么我们有什么办法让其不用查询那100W条数据呢?
答案就是控制主表的内容大小
首先我们找到主表A(以多表查询,每页100条数据为例),将其需要分页的100条数据取出:
select * from table_a limit 0,100
(提示:如果不需要查询全部数据建议只查询需要的字段,可以减轻数据库压力,提高查询速度)
再以这张查询出来的表作为主表,然后连接其他表即可
select * from (select * from table_a limit 0,100) a
left join table_b b on a.id=b.id
在数据量过大的表中,以上分页查询方式效率远大于以下查询方式:
select * from table_a a
left join table_b b on a.id=b.id
limit 0,100
学习的是思路与逻辑!!!