海量表数据之分页查询SQL优化

方案1:首先使用索引完成排序分页操作,最后根据主键关联回原表查询所需要的其他列内容。
1.普通分页查询:
explain select film_id,description from film order by title limit 50,5;
在这里插入图片描述
扫描了全表,使用了filesort排序;速度很慢;
2.改进分页查询:
explain select a.film_id,a.description from film a inner join (select film_id from film order by
title limit 50,5)b on a.film_id=b.film_id;
在这里插入图片描述

方案2:把limit查询转换成某个位置的查询
需求:假设煤业10条记录,查询支付表payment中按照租赁编号rental_id逆序排
序的第42页记录。
select payment_id,rental_id from payment order by rental_id desc limit 410,10;
和开发人员协商一下,在翻页的过程中通过增加一个参数last_page_record,用来记录上一页最后的租赁标号rental_id,例如第41页最后一行的租赁编号rental_id=15640;
select * from payment where rental_id<15640 order by rental_id desc limit 10;

你可能感兴趣的:(基础知识,个人收集)