互联网公司拥有海量数据时,页面加载慢会直接导致用户体验的下降,用户体验决定着产品的未来。
所有一个高效的分页变得尤为重要。
优化原则
尽量减少扫描数据库中记录的条数。
常用SQL
select * from `表名` order by id desc limit 0,20;
当数据量变大时
select * from `表名` order by id desc limit 100000,20;
limit 100000,20 的意思扫描满足条件的100020行。
优化后SQL
//查询上一页数据
select * from `表名` where id <=100020 order by id desc limit 20;
//查询下一页数据
select * from `表名` where id >100020 order by id asc limit 20;
每次查询只扫描20行。效率提高了!
PS : 面试也经常会被问到。
Thanks ~
AD:
PHP工程师订阅号
网友评论
可以select * from `表名` inner join(select id from "表名" limit (100020,10)) as tmp ,必要情况force index.