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
上次更新: 2020/10/11, 7:10:00
最近更新
01
RabbitMQ简介
10-27
02
聊聊Java多态
10-21
03
JVM垃圾回收器
10-16
更多文章>