在MYSQL中关于分页,大家不免用到LIMIT进行分页。
而在MYSQL中只要数据量到达百万级是用LIMIT就会显得有点迟缓,而在程序中这种迟缓是程序员不能接受的。
而怎么解决这个问题呢?
现在开始了我的测试
现在测试一下60 万的表:
limit 0 ,10 – 0.007 秒
limit 100 ,10 – 0.008
limit 1000 ,10 – 0.012
limit 10000 ,10 – 0.017
limit 100000 ,10 – 0.107
limit 200000 ,10 – 0.208
limit 500000 ,10 – 0.533
- 利用索引
众所周知利用索引查询的语句如果只包含索引列(覆盖索引),那么它查询的速度是非常快的
利用索引查询为什么快:因为索引查找有优化算法,并且数据就在索引上面不用再去查找相关的数据地址了
我们这里使用id 字段 是主键,自然也就包含了默认的索引:
select * from customer t join (SELECT id from customer limit 500000 ,10 ) tc on t.id = tc.id -- 0.149 秒
与上面相比相差了 4倍(这里数据量不多,相差时间不是很明显)
另一种写法:(两者的原理都是一样的)
select * from customer where id >=(SELECT id from customer limit 500000 , 10) limit 10
如有不足请各位大神指教