Limit a , b 表示查询前a+b条,去掉前a条,取到a~b条的条目。
对分页limit m,n的优化。(使m值变小就会提高sql效率)
原理:记录当前页的最大值和最小值,计算跳转页和当前页的跳转偏移,由于页面相近这个偏移量不会很大,这样的话m值较小,大大减小扫描行数。其实传统的limit m ,n 相对偏移一直是第一页。这样的话,越往后效率越低。
limit10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,问题就在这里。
LIMIT 451350 , 30 扫描了45万多行,怪不得慢的都堵死了。
limit 30 这样的语句仅仅扫描30行。
那么如果我们之前记录了最大ID,就可以在这里做文章
举个例子
日常分页SQL语句
select id,name,content from users order by id asc limit 100000,20
扫描100020行
如果记录了上次的最大ID
select id,name,content from users where id>100000 order by id asc limit 20
扫描20行。