金三银四面试季,真实面试经历打开Mysql大门

2023年 7月 11日 47.9k 0

金三银四的季节又来了,小贱继续开始了他的面试之旅,这次面试的宇宙巨头下面某书的一个部门。

面试官:看你简历上有做过分页查询,你能说说你是怎么做的吗? 小贱:主要是用到了limit来实现分页。 面试官:能说说具体放limit原理吗? 小贱:emm…

在我们日常开发中,经常需要返回表中前几行数据或者中间某几行数据,那么这个时候我们就可以用limit来实现这些需求。那么limit是如何使用的呢?

limit的使用方法

常见的limit使用方式有以下两种方式:

1. SELECT * FROM TABLE LIMIT XXX; 

2. SELECT * FROM TABLE LIMIT XXX, XXX;

如上所示,limit后可以接受一个参数,也可以接受两个参数,那么他们的区别是什么呢?

limit的使用语法如下:

SELECT … FROM … LIMIT OFFSET N; 第一个参数OFFSET:表示偏移量,表示从返回记录集的第几条开始截取数据,需要注意的是 初始偏移量是0而不是1; 第二个参数N:表示要返回的记录行的最大数目,当N = -1 表示返回到最后记录集的最后一行

举例说明:

 //表示返回记录集的第3-5行 
1. SELECT * FROM TABLE LIMIT 2, 3; 

    //表示返回记录集的第1-3行
2. SELECT * FROM TABLE LIMIT 3;
    //等价于下面的写法
    SELECT * FROM TABLE LIMIT 0, 3; // 同样表示返回记录集的第1-3行

limit的原理

那limit的原理是怎么样的呢?接下来我们通过实验来进行分析,实验申明:众所周知,不说明mysql版本和存储的引擎的mysql实验都是耍流氓,所以本次实验的mysql版本是,存储引擎是innodb。

首先我们先建一张实验用表,我们就取名为 test_limit吧,建表语句如下:

CREATE TABLE `test_limit` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `a` INT NULL,
  `b` INT NULL,
  PRIMARY KEY (`id`)) ENGINE=InnoDB ;

表结构很简单,就一个自增主键,两个整型字段。如下图:

金三银四面试季,真实面试经历打开Mysql大门

接着咱们往里面插入10万条数据:

delimiter ;;
create procedure gen_data()
begin
declare i int;
set i=1;
while(i

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论