MySQL 分页查询优化技巧
情况:分页前面很快,后面的页很慢
原始语句
select id,birthday,title from person order by title limit 400000,1
分析:此语句效率低主要是因为有排序
改进
select id,birthday,title from person as p1
join
(select id from person order by title limit 400000,1) p2
on p1.id=p2.id;
表结构
CREATE TABLE `person` (
`id` int NOT NULL AUTO_INCREMENT,
`birthday` date DEFAULT NULL,
`title` varchar(100) DEFAULT NULL,
`comm1` varchar(6383) DEFAULT NULL,
PRIMARY KEY (`id`) ,
KEY `p_1`(`title`)
)ENGINE=InnODB AUTO_INCRENENT=438174 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
总结: 二级索引 p_1 实际上是包含 主键索引的,P2临时表只查询这两个字段所以会提高查询速度 利用的就是索引比表小的多的原理,如果索引不合适,条件覆盖不到,那一样会很慢。