码迷,mamicode.com
首页 > 其他好文 > 详细

select语句没有where条件,limit慢咋办?

时间:2018-07-25 22:42:21      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:image   and   HERE   0.00   where   扫描   输入   RoCE   table   

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慢咋办?

标签:image   and   HERE   0.00   where   扫描   输入   RoCE   table   

原文地址:http://blog.51cto.com/8370646/2150173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!