【Mysql 学习】LIMIT 的使用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

--limit 的使用

 select 。。。。[LIMIT offerset_startrow_count]其中offerset_start 表上记录的起

limit  rowstart,rowcount 类似与分页查询,rowstart是从第几行开始,rowcount是包括此后几行,
在一些情况中,当你使用LIMIT row_count而不使用HAVING时,MySQL将以不同方式处理查询。
始偏移量,默认为0,只需记录数据行就可以了。row_count为显示的行数。
---显示第一行。
mysql> select * from emp order by birdate desc limit 1;
+-------+----------+------------+--------+
| eid   | ename    | birdate    | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 |   1001 |
+-------+----------+------------+--------+
1 row in set (0.00 sec)
---显示前两行。
mysql> select * from emp order by birdate desc limit 2;
+-------+----------+------------+--------+
| eid   | ename    | birdate    | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 |   1001 |
| 10003 | lily     | 1988-09-17 |   1003 |
+-------+----------+------------+--------+
2 rows in set (0.00 sec)
--显示从第一行开始以后(不包括第一行)的三行数据。
注意limit显示的时候不包括offerset_start那一行。如下面的offerset_start=1 则不包括第一行。
mysql> select * from emp order by birdate desc limit 1,3;
+-------+--------+------------+--------+
| eid   | ename  | birdate    | deptno |
+-------+--------+------------+--------+
| 10003 | lily   | 1988-09-17 |   1003 |
| 10002 | yangql | 1987-12-30 |   1003 |
+-------+--------+------------+--------+
2 rows in set (0.02 sec)
--显示从第三行记录开始,以后的三行,如果没有足够的数据,则显示offerset_start以后的所有记录。
mysql> select * from emp order by birdate desc limit 2,3;
+-------+--------+------------+--------+
| eid   | ename  | birdate    | deptno |
+-------+--------+------------+--------+
| 10002 | yangql | 1987-12-30 |   1003 |
+-------+--------+------------+--------+
1 row in set (0.00 sec)

mysql> select * from emp order by birdate desc limit 1,1;
+-------+-------+------------+--------+
| eid   | ename | birdate    | deptno |
+-------+-------+------------+--------+
| 10003 | lily  | 1988-09-17 |   1003 |
+-------+-------+------------+--------+
1 row in set (0.00 sec)

mysql> select * from emp order by birdate desc limit 1,2;
+-------+--------+------------+--------+
| eid   | ename  | birdate    | deptno |
+-------+--------+------------+--------+
| 10003 | lily   | 1988-09-17 |   1003 |
| 10002 | yangql | 1987-12-30 |   1003 |
+-------+--------+------------+--------+
2 rows in set (0.00 sec)

mysql> select * from emp order by birdate desc limit 0,1;
+-------+----------+------------+--------+
| eid   | ename    | birdate    | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 |   1001 |
+-------+----------+------------+--------+
1 row in set (0.00 sec)

mysql> select * from emp order by birdate desc limit 0,3;
+-------+----------+------------+--------+
| eid   | ename    | birdate    | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 |   1001 |
| 10003 | lily     | 1988-09-17 |   1003 |
| 10002 | yangql   | 1987-12-30 |   1003 |
+-------+----------+------------+--------+
3 rows in set (0.00 sec)
MySQL如何优化LIMIT
·如果你用LIMIT只选择一些行,当MySQL选择做完整的表扫描时,它将在一些情况下使用索引。
·如果你使用LIMIT row_count与ORDER BY,MySQL一旦找到了排序结果的第一个row_count行,将结束排序而不是排序整个表。如果使用索引,将很快。如果必须进行文件排序(filesort),必须选择所有匹配查询没有LIMIT子句的行,并且在确定已经找到第1个row_count行前,必须对它们的大部分进行排序。在任何一种情况下,一旦找到了行,则不需要再排序结果的其它部分,并且MySQL不再进行排序。
·当结合LIMIT row_count和DISTINCT时,MySQL一旦找到row_count个唯一的行,它将停止。
·在一些情况下,GROUP BY能通过顺序读取键(或在键上做排序)来解决,然后计算摘要直到关键字的值改变

。在这种情况下,LIMIT row_count将不计算任何不必要的GROUP BY值。
·只要MySQL已经发送了需要的行数到客户,它将放弃查询,除非你正使用SQL_CALC_FOUND_ROWS。
·LIMIT 0将总是快速返回一个空集合。这对检查查询的有效性是有用的。当使用MySQL API时,它也可以用来得到结果列的列类型。
 (该技巧在MySQL Monitor中不工作,只显示Empty set;应使用SHOW COLUMNS或DESCRIBE)。
· 当服务器使用临时表来进行查询时,使用LIMIT row_count子句来计算需要多少空间。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
38 3
|
4月前
|
SQL 关系型数据库 MySQL
关于MySQL数据库的学习指南总结
【6月更文挑战第17天】MySQL是流行的关系型DBMS,适合各种应用。学习要点包括安装配置、数据类型、SQL(如SELECT、INSERT)、关系模型、表设计、SQL查询(如WHERE、ORDER BY)、事务处理、用户管理、性能优化和高级技术如存储过程、触发器。了解ACID特性,使用索引和内存优化提升性能,通过备份恢复确保数据安全。不断学习新技术以提升技能。
88 3
|
8天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
32 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
9天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
14 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
9天前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
11 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
16天前
|
SQL 缓存 关系型数据库
MySQL Limit实现原理
本文详细探讨了MySQL中`LIMIT`子句的实现原理及其在不同场景下的应用。`LIMIT`用于控制查询结果的行数,结合`OFFSET`可实现分页查询。其内部实现涉及解析器、优化器和执行器三部分,通过索引利用、子查询优化等提升性能。文章还提供了性能优化策略,如索引优化、覆盖索引及延迟关联等,并给出实践建议。
39 3
|
12天前
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
15 0
|
20天前
|
Kubernetes 关系型数据库 MySQL
k8s学习--利用helm部署应用mysql,加深helm的理解
k8s学习--利用helm部署应用mysql,加深helm的理解
|
1月前
|
SQL 关系型数据库 MySQL
学习MySQL操作的有效方法
学习MySQL操作的有效方法
40 3
|
1月前
|
SQL 关系型数据库 MySQL
如何学习 MySQL?
如何学习 MySQL?
35 3

热门文章

最新文章