Select * from table limit 10慢了,表有100万条数据,没有where条件,就是慢了,如何优化

  • 以sbtest1表为例,100万数据 select * from sbtest1 limit 10; 执行时间0.00sec select * from sbtest1 limit 550000,10; 执行时间0.99 sec select * from sbtest1 limit 990000,10; 执行时间1.32 sec

  • 可以改写sql为: select * from sbtest1 where id between 990001 and 990010;

  • 看看执行计划

  • 将sbtest1表提升至1000w条数据

  • 随便输入两个数字,0.02 sec很快!再看看下面随便查100行的速度,也是超级快! 虽然不知道实际有没有这么写,但是这种写法确实是我觉得目前最效率的。

网上有很多教这种写法: select * from sbtest1 where id >= (select id from sbtest1 limit 990000,1) limit 10; 查出来的数据不一样,如下 我试了试改良写法,取的数据是正确 select * from sbtest1 where id >= (select id from sbtest1 order by id limit 990000,1) limit 10;