mysql
mysql超大分页怎么处理?
❒ 在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。 ✔ 我们一起来看看执行limit分页查询耗时对比: mysql:SELECT * FROM blog_post WHERE like_count › 0 LIMIT 0,10; (10 rows in set 0.00 sec) mysql:SELECT * FROM blog_post WHERE like_count › 0 LIMIT 9000000,10; (10 rows in set 11.05 sec) ✔ 因为,当在进行分页查询时,如果执行limit 9000000,10,此时需要MySQL排序前9000010 记录,仅仅返回9000000 - 9000010的记录,其他记录丢弃,查询排序的代价非常大。 ✔ 优化后:SELECT * FROM blog_post t, (SELECT id FROM blog_post WHERE like_count › 0 LIMIT 9000000,10) a WHERE t.id = a.id;
造成原因: 在数据量比较大时,limit分页查询,需要对数据进行排序,效率低。 解决方案: 覆盖索引 + 子查询