limit用于分页查询时越往后翻性能越差,解决的原则:缩小扫描范围,如下所示:
select * from user order by id desc limit 100000,10
耗时0.4秒
select * from user order by id desc limit 1000000,10
耗时5.2秒
先筛选出ID缩小查询范围,写法如下:
select * from user where id > (select id from user order by id desc limit 1000000, 1) order by id desc limit 0,10
耗时0.5秒
如果查询条件仅有主键ID,写法如下:
select id from user where id between 1000000 and 1000010 order by id desc
耗时0.3秒
如果以上方案依然很慢呢?只好用游标了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22996654/viewspace-2673512/
,如需转载,请注明出处,否则将追究法律责任。