0
点赞
收藏
分享

微信扫一扫

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


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函数进行分页,在数据小的情况下没什么问题,但数据量过大,则会显得很吃力。
下面以一张简单的订单表为例,做一次分页优化。

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

(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


举报

相关推荐

0 条评论