MYSQL分页效果优化

一般的分页都是LIMIT m,n 但是如果m很大,就会极大的影响效率

因为m在MYSQL中代表着要求MYSQL丢弃前m条结果

 

如:

 正在显示第 1000000 - 1000009 行 (共 10 行, 查询花费 4.0263 秒) [id: 1000002 - 1000011]
SELECT * FROM `mio_pic_info` WHERE static='1' ORDER BY id ASC LIMIT 1000000,10

优化方法是 通过WHERE条件使用主键约束偏移量,这样MYSQL就不用丢弃结果,而是直接返回我们想要的数据了

正在显示第 0 - 9 行 (共 10 行, 查询花费 0.0124 秒) [id: 1000002 - 1000011]
SELECT * FROM `mio_pic_info` WHERE id>='1000002' AND static='1' ORDER BY id ASC LIMIT 10