MySQL数据库分页查询
—以h_address表为例
方法1:使用基本方法LIMIT
表中的数据:
使用分页查询,如下:
SELECT * from user LIMIT 1,2;
LIMIT是关键字,用来进行分页查询。
后面“1,2”中:
前面的“1”是从多少个索引开始(第一条的索引是从0开始);
后面的"2"是要展示多少条数据
选取范围如下:
最终结果:
- 可以试着在查询语句加上where、order by等条件,可以进行筛选和排序,在定程度上也是一种优化
- 但是这样会有弊端,如果你要的数据量很大,如果是LIMIT 200000,200,需要扫描200200行,如果在一个高并发的应用里,每次查询需要扫描超过20W行,效率十分低下。
方法2:虽然扫描的数据量少了,但是在某些需要跳转到多少也得时候就无法实现,这时还是需要用到方法1,既然不能避免,那么我们可以考虑尽量减小m的值,因此我们可以给这条语句加上一个条件限制。是的每次扫描不用从第一条开始。这样就能尽量减少扫描的数据量。
例如:每页10条数据,当前是第10页,当前条目ID的最大值是109,最小值是100.(当前100-109)
那么跳到第9页:(由于我的表数据不多,就不展示图片了)
select * from h_address where deptno<100 order by id desc limit 0,10; //倒序
那么跳到第8页:
select * from h_address where deptno<100 order by id desc limit 10,10;
那么跳到第11页:
select * from h_address where deptno>109 order by id asc limit 0,10;