MySQL分页查询慢怎么办

今天看到一个问题。
MySQL分页查询慢怎么办?
第一反应是用limit限制返回的条数。
比如

select * from table order by idlimit 10, 100;

实际上我们限制的只是返回的条数是100,并不是查询时就从第10条开始获取数据。
所以实际上MySQL会从第0条开始查询,得到10+100=110条数据,然后放弃掉前面10条数据,返回100条数据。
所以在数据量越来越大,分页的起始条数越来越靠后时,耗时越来越长。

那如何优化呢?

记录起点,放弃使用offset

select * from table order by id where id >= 10 limit 100;

根据索引直接定位到10数据所在叶子节点,取范围100个叶子节点的行数据返回。

你可能感兴趣的:(MySQL,mysql,数据库)