#### 分页算法
~~~
limit (页码-1) * 条数 , 条数
~~~
#### 测试
~~~
+----------+------------+--------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+--------------------------------------+
| 1 | 0.00049325 | select * from user limit 1000 ,10 |
| 2 | 0.03135925 | select * from user limit 100000 ,10 |
| 3 | 0.25734325 | select * from user limit 1000000 ,10 |
| 4 | 0.77315600 | select * from user limit 3000000 ,10 |
+----------+------------+--------------------------------------+
~~~
因此:limit offset,N ; 当offset非常大时,效率极低 .
原因是:mysql并不是跳过offset行,然后单取N行。而是取offset+N行,放弃前offset行,返回N行。效率较低,当offset越大是,效率越低。

#### 优化办法
1. 从业务上去解决:办法:不允许翻过100页,以百度为例,一般翻页到70页左右,谷歌40页左右.
2. 不用offset,用条件查询 , 用条件替代偏移量 .
#### 通过 where+order+limit 取代 order+limit 偏移量,长度
~~~
+----------+------------+------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+------------------------------------------------------------+
| 1 | 0.00030950 | select * from user where id > 2000000 order by id limit 10 |
| 2 | 0.00029175 | select * from user where id > 4000000 order by id limit 10 |
+----------+------------+------------------------------------------------------------+
~~~
并且使用到了索引:
~~~
id: 1
select_type: SIMPLE
table: user
partitions: NULL
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: NULL
rows: 1232052
filtered: 100.00
Extra: Using where
1 row in set, 1 warning (0.00 sec)
~~~

#### 注意
where+order+limit的算法问题

通过where+order+limit实现数据获取的注意:
1. 排序的字段最好是从1开始,并且是连续自增的,这样方便where计算并获得指定的数据信息.
2. 这种方法使用次数较少 , 一般都是从业务上进行解决,就是限制显示页数 .
- MySQL优化概述
- 存储引擎的选择
- innodb引擎
- myisam引擎
- memory引擎
- 查询需优化语句
- 通用查询日志
- 慢查询日志
- profile机制
- 索引
- 索引基本介绍
- 索引类型
- 索引管理语法
- 创建索引主要事项
- 执行计划
- 查看索引类型
- myisam索引数据结构
- innodb索引数据结构
- 索引覆盖
- 索引使用原则
- 列独立
- like查询
- 复合索引使用
- or运算都具有索引
- mysql智能选择
- 优化group by语句
- 前缀索引
- 全文索引
- 查询缓存
- 查询缓存操作
- 无缓存
- limit分页优化
- 分区
- 分区介绍
- list分区
- range分区
- hash分区
- key(键值)分区
- 分区管理
- 分表
- 分表介绍
- 水平分表
- 垂直分表
- MySQL锁机制
- 锁机制介绍
- 锁的几种形式
- 表锁操作
- 行锁操作
- 数据碎片与维护
- 范式
- 第一范式
- 第二范式
- 第三范式
- 反三范式
- 主从复制
- 介绍
- 读写分离