SELECT film_id,title, from film order by title limit 900, 10;
- 先执行黑色部分,再执行红色分页
-
优化思路
先想办法走索引覆盖
- 得到所需数据的ID
-
优化SQL


在不改变索引的情况下 得到所需数据的主键
select film_id from film order by title limit 900, 10;
原表与上面的结果连表,获取最终结果
SELECT f.film_id, f.title, f.description FROM `film` f INNER JOIN ( SELECT film_id FROM `film` ORDER BY title LIMIT 900, 10 ) m ON f.film_id = m.film_id;总结
排序偏移量大时,会丢弃大量无用数据,导致效率低下
- 可以采取先索引覆盖,再用最终ID回表的方法,优化效率
