首页 > 其他 > 详细

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

时间:2018-07-25 22:37:35      阅读:288      评论:0      收藏:0      [点我收藏+]
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慢咋办?

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!