MySQL分页查询
# 基础分页查询
基础的分页查询使用limit子句实现:
SELECT * FROM table_name LIMIT [offset,] rows | rows OFFSET offset;
1
LIMIT子句可以用于指定SELECT语句返回的记录数。使用注意:
- 第一个参数指定第一个返回记录行的偏移量,从0开始;
- 第二个参数指定返回记录行的最大数目;
- 如果只给定一个参数,表示返回最大的记录行数目
- 第二个参数为 -1 表示检索从某一个偏移量到记录集的结束所有的记录行
- 初始记录行的偏移量是 0(而不是 1)
例:
SELECT * FROM message LIMIT 2,10; // 2 偏移量(开始的位置), 10 最大记录数
1
# 分页查询优化
当数据量达到一定程度时,使用基础的分页查询将会导致查询时间偏长。
# 使用子查询优化
先定位偏移量的id,然后才往后查询,适用于id自增。例:
SELECT * FROM message WHERE id >= (SELECT * FROM message LIMIT 2,1) LIMIT 10;
1
# 使用id限定优化
根据查询的页数和查询的记录数可以计算出查询出id的范围。适用于id自增。
SELECT * FROM message WHERE id BETWEEN 2 AND 12 LIMIT 10;
// 或
SELECT * FROM message WHERE id >= 2 LIMIT 10;
1
2
3
2
3
上次更新: 2020/10/11, 7:10:00