MySQL 分页优化

MySQL 可以通过以下方式优化分页效率

问题

  1. MySQL 分页查询多行会导致查询出很多无用数据后再进行筛选,效率低下
  2. 例如 limit 1000, 10 会排序出前 1010 行数据,然后取最后 10 行

解决

  1. 子查询先利用覆盖索引查询到满足条件的主键数据,再利用主键回表查找对应记录
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
	co.name,
	co.point
FROM
	pt_course co
INNER JOIN (
	SELECT
		id
	FROM
		pt_course 
	LIMIT 1000, 10
) coo
ON co.id = coo.id;