`
gaoyu
  • 浏览: 274691 次
  • 来自: 云南大理
社区版块
存档分类
最新评论

mysql中limit最详细解说教程 limit用法大全 limit注意事项

阅读更多
Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

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

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。

mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15

//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

//如果只给定一个参数,它表示返回最大的记录行数目:
mysql> SELECT * FROM table LIMIT 5;     //检索前 5 个记录行

//换句话说,LIMIT n 等价于 LIMIT 0,n。

注意limit 10和limit 9,1的不同:

例如:

1.
Select * From cyclopedia Where ID>=(
Select Max(ID) From (
Select ID From cyclopedia Order By ID limit 90001
) As tmp
) limit 100;

2.
Select * From cyclopedia Where ID>=(
Select Max(ID) From (
Select ID From cyclopedia Order By ID limit 90000,1
) As tmp
) limit 100;

同样是取90000条后100条记录,第1句快还是第2句快?
第1句是先取了前90001条记录,取其中最大一个ID值作为起始标识,然后利用它可以快速定位下100条记录
第2句择是仅仅取90000条记录后1条,然后取ID值作起始标识定位下100条记录
第1句执行结果.100 rows in set (0.23) sec
第2句执行结果.100 rows in set (0.19) sec

其实第2句完全可以简化成:

Select * From cyclopedia Where ID>=(
Select ID From cyclopedia limit 90000,1
)limit 100;

直接利用第90000条记录的ID,不用经过Max运算,这样做理论上效率因该高一些,但在实际使用中几乎看不到效果,因为本身定位ID返回的就是1条记录,Max几乎不用运作就能得到结果,但这样写更清淅明朗,省去了画蛇那一足.

Select Top 100 * From cyclopedia Where ID>=(
Select Top 90001 Max(ID) From (
Select ID From cyclopedia Order By ID
) As tmp
)

但不管是实现方式是存贮过程还是直接代码中,瓶颈始终在于MS-SQL的TOP总是要返回前N个记录,这种情

况在数据量不大时感受不深,但如果成百上千万,效率肯定会低下的.相比之下MySQL的limit就有优势的多

,执行:
Select ID From cyclopedia limit 90000
Select ID From cyclopedia limit 90000,1
的结果分别是:
90000 rows in set (0.36) sec
1 row in set (0.06) sec
而MS-SQL只能用Select Top 90000 ID From cyclopedia 执行时间是390ms,执行同样的操作时间也不及MySQL的360ms.

limit的offset(偏移量)用于记录较多的时候,记录较少时,偏移offset较小,直接使用limit较优。offset越大,后者越优。


////////////////////////////////////////////////////////////////////////




1、offset比较小的时候。



select * from yanxue8_visit limit 10,10

多次运行,时间保持在0.0004-0.0005之间


Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10

多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优。这个显示是子查询的原因。


2、offset大的时候。


select * from yanxue8_visit limit 10000,10

多次运行,时间保持在0.0187左右


Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10000,1
) limit 10

多次运行,时间保持在0.0061左右,只有前者的1/3。可以预先offset越大,后者越优。



//////////////////////////////////////////////////////////////////////////////////////////////

mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
//如果只给定一个参数,它表示返回最大的记录行数目
分享到:
评论

相关推荐

    limit传参的使用方法

    本文将详细介绍如何在MySQL中使用`LIMIT`结合参数化查询来实现灵活且安全的数据检索。 #### 一、基础知识简介 1. **LIMIT子句**:`LIMIT`是SQL语言中的一个关键词,用于限制查询结果的数量。其基本语法为: ```...

    MYSQL分页limit速度太慢的优化方法

    MySQL中的分页查询是Web应用中常见的操作,但随着数据量的增长,`LIMIT`语句在处理大量数据时性能会显著下降。特别是当`OFFSET`值增大时,MySQL需要扫描更多的行来找到需要的数据,这可能导致查询速度变慢,甚至对...

    Mysql中limit的用法方法详解与注意事项

    以下是关于`LIMIT`用法的详细说明及其注意事项。 1. **基本语法**: `LIMIT`子句的基本语法如下: ```sql SELECT column1, column2, ... FROM table_name LIMIT [offset,] rows | rows OFFSET offset ``` ...

    Mysql_limit.zip_limit

    通过以上讲解,我们了解了`LIMIT`在MySQL中的作用、使用方法以及与`ORDER BY`的配合,以及如何通过优化来提高查询效率。在实际开发中,熟练掌握`LIMIT`的运用能帮助我们更好地处理大数据查询,提升数据库的性能。

    关于Mysql分页的两种方法,假分页和limit分页

    本篇文章将详细探讨两种常见的分页方法:假分页和LIMIT分页。 首先,我们来理解什么是假分页。假分页通常在前端实现,它并不涉及数据库级别的分页操作。假分页的工作原理是,服务器一次性获取所有数据,然后在...

    mysql分页的limit参数简单示例

    Mysql的分页的两个参数 select * from user limit 1,2 ... 您可能感兴趣的文章:详解MySQL的limit用法和分页查询语句的性能分析MYSQL分页limit速度太慢的优化方法mysql limit分页优化方法分享Mysql limit

    详解mysql的limit经典用法及优化实例

    MySQL中的`LIMIT`子句是用于在查询结果集中限制返回行数的关键字,这对于实现分页功能至关重要。本文将深入探讨`LIMIT`的几种经典用法以及如何对其进行优化,特别是针对大数据量时性能的提升。 **用法一:指定开始...

    sql语句中select top n与oracle的rownum与mysql的limit用法

    sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法

    使用limit,offset分页场景时为什么会慢

    在SQL查询中,使用`LIMIT`和`OFFSET`进行分页操作在大数据量的情况下可能会变得极其缓慢。这是因为`OFFSET`需要跳过指定数量的行,而数据库必须读取并忽略这些行,这在数据量大的情况下会涉及大量的I/O操作,尤其是...

    Mysql教程最全最详细pdf

    MySQL教程是最全面、最详尽的数据库学习资源之一,尤其对于初学者而言,它提供了从基础到高级的全面知识。本教程PDF旨在帮助用户掌握MySQL的各个方面,包括安装配置、数据库设计、SQL语言、存储引擎、事务处理、备份...

    mysql limit两个参数的四种用法

    MySQL中的`LIMIT`子句是查询结果集控制的关键部分,特别是在处理大数据量时,它能够有效地帮助我们获取所需的数据片段,而不是返回整个结果集。在MySQL中,`LIMIT`可以接受一个或两个参数,用于限制返回的记录数或...

    Oracle中实现MySql中limit+SqlServer分页+分页的存储过程

    本篇文章将探讨如何在Oracle数据库中实现类似MySQL的`LIMIT`分页功能,以及如何模拟SQL Server的分页方式,并介绍`INTERSECT`和`MINUS`这两个SQL运算符。 首先,`INTERSECT`运算符用于找出两个或多个查询结果中的...

    mysql中limit的用法深入分析

    MySQL中的`LIMIT`子句是SQL查询语句中用于限制返回结果集数量的关键字,它在数据检索时非常有用,特别是在处理大型数据表时,可以有效地控制查询的性能和资源消耗。本文将深入分析`LIMIT`的用法,并提供相关的实践...

    mysql order by limit 的一个坑.docx

    MySQL 是一种广泛使用的关系型数据库管理系统,它提供了强大的查询功能,其中 ORDER BY 和 LIMIT 两个关键字是最常用的查询语句。然而,在某些情况下,使用 ORDER BY 和 LIMIT 两个关键字可能会出现一些坑,今天...

    mysql limit 分页的用法及注意要点

    本文将深入探讨`LIMIT`的用法和注意事项,帮助开发者更高效地使用这一功能。 首先,`LIMIT`子句的基本语法如下: ```sql SELECT column1, column2, ... FROM table_name LIMIT [offset,] rows | rows OFFSET ...

    MySQL最详细的安装卸载讲解以及初级使用方法和注意事项

    本文将详细介绍MySQL的安装、卸载过程,以及初级使用方法和注意事项。 首先,我们来谈谈MySQL的安装。在Windows操作系统中,你可以从MySQL官方网站下载安装包。安装过程中,确保选择“Custom”安装类型,这样可以...

    mysql分页之limit优化技巧

    本文档针对mysql分页之limit慢的问题,使用联合索引在大数据量的情况下优化limit分页的性能

    mysql delete limit 使用方法详解

    MySQL中的`DELETE`语句是用于从数据库表中删除数据的关键操作。然而,在大量数据处理时,直接使用`DELETE`可能会导致性能问题,因为它可能会锁定整个表,影响其他并发操作。这就是`DELETE ... LIMIT`语句的作用,它...

    关于sqlite使用limit的一些详细说明

    例如,MySQL支持`LIMIT`后的`OFFSET`,而某些数据库可能需要使用其他方法来实现相同的功能。 7. **优化策略:** 对于非常大的数据集,使用`LIMIT`和`OFFSET`可能效率较低,因为数据库需要扫描和跳过许多行。在这种...

Global site tag (gtag.js) - Google Analytics