limit简要分析

Deadly 提交于 2019-11-27 15:44:29

limit简要分析

limit分析:

查询分页,limit [offset] rows ,offset 是偏移量,rows是需要的数据行数,当偏移量较大时,就会发现limit是从头开始查询到offset+rows,然后舍弃前面的行数返回最后的rows行,这样在小量数据是没有太大问题的,但是在百万或者千万级的数据表中进行查询就会非常吃力,

从上面表可以看出,效率极差,即使经过优化,比如加上  “order by id”,使用主键索引进行查询优化,经过测试表明,当偏移量较大时也是很慢,所以进来避免在2000000以上的数据表中使用。反向查找的结果是是降序desc的,并且InputDate是记录的插入时间,也可以用主键联合索引,但是不方便。

 

limit推荐优化1:

SELECT * FROM t_limitgate3 WHERE id >=(select id from t_limitgate3 limit 9000000, 1) limit 100

使用该语句对:

select * from t_limitgate3 limit 9000000,100

进行优化对比

 

由第九百万行开始一百条

使用优化前

使用优化后

第一次执行

1:00

14.976s

第二次执行

1:00

7.332s

1钟与14秒的差距还是很大的嘛,真的快了很多~~差不多快了4倍,

第二次执行,只用了短短的7.332s

优化前的语句第二次执行,依然是1分钟,第二次执行测试快了相当于8倍左右,相当可以了呢!

 

limit推荐优化2:

SELECT * FROM t_limitgate3 a JOIN (select id from t_limitgate3 limit 9000000, 100) b ON a.id = b.id

使用该语句对:

select * from t_limitgate3 limit 9000000,100

进行优化对比

 

由第九百万行开始一百条

使用优化前

使用优化后

第一次执行

1:00

15.741s

第二次执行

1:00

16.209s

1钟与15秒的差距也还是很大的,同样快了很多~~差不多也是快了4倍,

第二次执行,用了短短的16.209s

优化前的语句第二次执行,依然还是1分钟,第二次执行测试快了相当于4左右,也同样相当可以了呢!

 

总结:

总的来说limit分页查询还是不错的,虽然普通的未经优化的limit使用不尽人意,但是经过优化过后的确是很好用!千万级数据也是很快的。当然这是根据业务分析的话,一般一个页面展示100条记录也已经差不多! 最后根据各种测试使用,limit优化过得查询语句在数据行数超过5000条以上的数据也很慢,尝试两种优化查询5000条数据均耗时17s左右,由此看来limit只是适合任意偏移量,少量行数的情况,大量的行数查询也是不可行的。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!