Mysql分页以及优化的几种方式。

本文介绍了MySQL中分页查询的两种基本写法,并针对大数据量时的性能问题提出了五种优化策略:(1)创建合适的索引;(2)基于主键或唯一索引排序;(3)使用子查询定位记录;(4)利用JOIN查询;(5)结合ORDER BY与索引。这些方法旨在提高大数据场景下的分页查询效率。
摘要由CSDN通过智能技术生成

1,分页语句

  • m:页的长度,n:分页起始位置大小

第一种写法

  select * from [table_name]  limit m offset n;

第二种写法

select * from [table_name]  limit n , m;

获取从第n个开始的m个记录。

select * from `order` limit 10

获取从第1个开始的m个记录

2,分页优化

直接使用limit函数进行分页,在数据小的情况下没什么问题,但数据量过大,则会显得很吃力。
下面以一张简单的订单表为例,做一次分页优化。

在这里插入图片描述

(1)建立合适的索引

  • username建立索引
select * from `order` where username like '许%' limit 10000,5 

(2)根据主键或者唯一索引再排序

SELECT * FROM `order` WHERE id > (pageNum*pageSize) ORDER BY id ASC LIMIT pageSize

(3)子查询方式(非常快)

SELECT * FROM `order` WHERE  id >=  (SELECT id FROM `order` ORDER BY id LIMIT pageNum*pageSize, 1) LIMIT pageSize

(4)join查询(测试有些慢,不建议,有些人测试很快)

SELECT * FROM `order` AS t1   
JOIN (SELECT id as join_id FROM `order` ORDER BY id desc LIMIT pgeNum*pageSize, 1) AS t2   
WHERE t1.id <= t2.join_id ORDER BY t1.id desc LIMIT pageSize 

(5)利用MySQL支持ORDER操作可以利用索引快速定位部分元组,避免全表扫描

SELECT * FROM `order` WHERE id>=1000 ORDER BY id ASC LIMIT 0,20
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术砖家--Felix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值