MySQL Limit分页优化

在系统中需要进行分页的时候,我们通常会使用Limit加上偏移量的方法实现,问题来了,在偏移量非常大的时候,例如可能是limit 10000,10这样的查询,这时MySQL需要查询10010条记录然后只返回最后的10条,前面10000条记录都被抛弃,造成效率低下。

MySQL Limit分页优化

在对大量数据查询中需要进行分页的时候,我们通常会使用Limit加上偏移量的方法实现,

问题来了,在偏移量非常大的时候,例如可能是limit 10000,10这样的查询,这时MySQL需要查询10010条记录然后只返回最后的10条,

前面10000条记录都被抛弃,造成效率低下。

优化此类分页查询的一个最简单的办法就是尽可能地使用索引覆盖查询,而不是查询所有的列,

然后根据需要做一个关联操作再返回所需的列,对于偏移量很大的时候,这样做的效率会有很大提升。

SELECT * FROM test LIMIT 900000,10; 慢
SELECT * FROM test WHERE id >= ( SELECT id FROM test ORDER BY id LIMIT 900000,1 ) LIMIT 10 快
上一篇:基于Windows的FFmpeg+Red5实现海康监控摄像头RTSP协议转RTMP协议的WEB直播 下一篇:URL设置原则

评论

评论(0)

暂无评论