欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面试相关:Mysql千万级数据分页

程序员文章站 2022-04-06 08:05:00
...

面试相关:Mysql千万级数据分页

三次查询时间分别为:

  • 8486 ms
  • 8377 ms
  • 8143 ms

一般分页查询

一般的分页查询使用简单的 limit 子句就可以实现。limit 子句声明如下:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT 子句可以被用于指定 SELECT 语句返回的记录数。需注意以下几点:

  • 第一个参数指定第一个返回记录行的偏移量,注意从0开始
  • 第二个参数指定返回记录行的最大数目
  • 如果只给定一个参数:它表示返回最大的记录行数目
  • 第二个参数为 -1 表示检索从某一个偏移量到记录集的结束所有的记录行
  • 初始记录行的偏移量是 0(而不是 1)

下面是一个应用实例:

select * from wj.userinfo limit 10000,10;

该条语句将会从表 userinfo 中查询offset: 1000开始之后的10条数据,也就是第1001条到第1010条数据(1001 <= id <= 1010)。

数据表中的记录默认使用主键(一般为id)排序,上面的结果相当于:

select * from wj.userinfo order by id limit 10000,10;

查询时间分别为:171 ms

select * from wj.userinfo order by id limit 100000,1;
select * from wj.userinfo order by id limit 100000,10;
select * from wj.userinfo order by id limit 100000,100;
select * from wj.userinfo order by id limit 100000,1000;
select * from wj.userinfo order by id limit 100000,10000;

查询时间都很快47ms左右,而且是因为开启了MySQL缓存,所以第一次排序出来之后,后面的查询速度都超快。

后面会详细介绍MySQL相关的内容。