【Mysql 学习】LIMIT 的使用

--limit 的使用

 select 。。。。[LIMIT offerset_start,row_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子句来计算需要多少空间。

时间: 2024-10-18 09:39:32

【Mysql 学习】LIMIT 的使用的相关文章

我的MYSQL学习心得(七) 查询

在这个<我的MYSQL学习心得>系列里面,我一直都把MYSQL跟SQLSERVER进行比较,相互进行比较是学习一样东西比较好的方法 比较出大家的异同点,从而加深记忆 这一篇<我的MYSQL学习心得(七)>也是一样,相同的地方略略带过,不同的地方我会给出例子,谢谢大家的支持o(∩_∩)o      这一节主要介绍MYSQL里的基本查询(MYSQL官方参考手册) MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [g

我的MYSQL学习心得(七)

原文:我的MYSQL学习心得(七) 我的MYSQL学习心得(七) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六)   在这个<我的MYSQL学习心得>系列里面,我一直都把MYSQL跟SQLSERVER进行比较,相互进行比较是学习一样东西比较好的方法 比较出大家的异同点,从而加深记忆 这一篇<我的MYSQL学习心得(七)>也是一样,相同的地方略略带过,不

Mysql学习笔记(十)存储过程与函数 + 知识点补充(having与where的区别)

原文:Mysql学习笔记(十)存储过程与函数 + 知识点补充(having与where的区别) 学习内容:存储程序与函数...这一章学的我是云里雾里的... 1.存储过程...   Mysql存储过程是从mysql 5.0开始增加的一个新功能.存储过程的优点其实有很多,不过我觉得存储过程最重要的优点就是实现了SQL代码的封装,那么我们为什么需要封装SQL语句呢?原因就是当我们在面对一个庞大的数据库的时候,当我们使用外部程序去访问数据库的时候...我们总不能在外部程序中内嵌很多的SQL语句吧...

一千行的MySQL学习笔记汇总_Mysql

本文详细汇总了MySQL学习中的各类技巧,分享给大家供大家参考. 具体如下: /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCE

MySQL学习笔记之数据定义表约束,分页方法总结_Mysql

本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法.分享给大家供大家参考,具体如下: 1. primary key 主键 特点:主键是用于唯一标识一条记录的约束,一张表最多只能有一个主键,不能为空也不能重复 create table user1(id int primary key,name varchar(32)); mysql> insert into user1 values(1,'hb'); Query OK, 1 row affected (0.10 sec) mysql>

Mysql学习笔记(七)查(补充)

原文:Mysql学习笔记(七)查(补充) PS:五一还是要学习...虽然有点苦逼..但是路是自己选的,那么自己就要坚持的走下去... 学习内容: 1.数据库查找的补充... 查找涉及的东西比较多,在上一个章节没有完全介绍...我们还是以pet表格为例,在这里进行补充.... 模式匹配:   所谓模式匹配,无非就是按照某种模式进行查找...我们给出的一个模范,然后按照这个模范进行匹配完成的查找就属于模式匹配查找...模式匹配的查找中,我们不能够使用=或!=来操作,应该使用like或not like

经典分享MySQL的limit查询优化

以下的文章主要是对MySQL limit查询优化的具体内容的介绍,我们大家都知道MySQL数据库的优化是相当重要的.其他最为常用也是最为需要优化的就是limit.MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降. 同样是取10条数据 select * from yanxue8_visit limit 10000,10        select * from yanxue8_visit limit 0,10     就不是一个数量级别的. 网上也很多关

MYSQL的limit优化

MySQL的优化是非常重要的.其他最常用也最需要优化的就是limit.mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降. 同样是取10条数据 select * from yanxue8_visit limit 10000,10 和 select * from yanxue8_visit limit 0,10 就不是一个数量级别的. 网上也很多关于limit的五条优化准则,都是翻译自mysql手册,虽然正确但不实用.今天发现一篇文章写了些关于limit优

我的MYSQL学习心得(十四) 备份和恢复

原文:我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程

Mysql中limit的用法详解

Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最