海量表数据之分页查询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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值