1、未优化
select * from product limit 10, 20 0.016秒
select * from product limit 100, 20 0.016秒
select * from product limit 1000, 20 0.047秒
select * from product limit 10000, 20 0.094秒
//我们已经看出随着起始记录的增加,时间也随着增大, 这说明分页语句limit跟起始页码是有很大关系的,那么我们把起始记录改为40w看下(也就是记录的一般左右)
select * from product limit 400000, 20 3.229秒
//再看我们取最后一页记录的时间
select * from product limit 866613, 20 37.44秒
//像这种分页最大的页码页显然这种时间是无法忍受的。
2、优化
//这次我们之间查询最后一页的数据(利用覆盖索引,只包含id列),如下:
select id from product limit 866613, 20 0.2秒
//相对于查询了所有列的37.44秒,提升了大概100多倍的速度
//那么如果我们也要查询所有列,有两种方法,
//一种是id>=的形式,
//另一种就是利用join,看下实际情况:
SELECT * FROM product WHERE ID > =(select id from product limit 866613, 1) limit 20
//查询时间为0.2秒!
//另一种写法
SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id
//查询时间也很短!
|