22.5.1 回表查询优化分页
例如,按照t_upper_time排序分页查询t_goods数据表中的数据。
mysql> EXPLAIN SELECT id, t_price FROM t_goods ORDER BY t_upper_time LIMIT 10000, 10 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t_goods
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 14
filtered: 100.00
Extra: Using filesort
1 row in set, 1 warning (0.00 sec)
直接使用LIMIT语句进行分页时,MySQL会进行全表扫描并对查询的结果数据使用filesort方式进行排序。
接下来,按照索引分页并回表查询数据,改写后的SQL语句如下: