select语句没有where条件,limit慢咋办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了select语句没有where条件,limit慢咋办?相关的知识,希望对你有一定的参考价值。
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; - 看看执行计划,我靠,才扫描10行,能不快吗?千万级表又算啥?
- 将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;
上面标红的两个SQL不要用!!!
以上是关于select语句没有where条件,limit慢咋办?的主要内容,如果未能解决你的问题,请参考以下文章