面试相关:Mysql千万级数据分页
程序员文章站
2022-04-06 08:05:00
...
三次查询时间分别为:
- 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相关的内容。
上一篇: win10电脑重启FLTMGR.SYS蓝屏怎么修复?
下一篇: vue 后端管理框架模板