`
- 浏览:
274673 次
- 来自:
云南大理
-
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.
//如果只给定一个参数,它表示返回最大的记录行数目
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本文将详细介绍如何在MySQL中使用`LIMIT`结合参数化查询来实现灵活且安全的数据检索。 #### 一、基础知识简介 1. **LIMIT子句**:`LIMIT`是SQL语言中的一个关键词,用于限制查询结果的数量。其基本语法为: ```...
MySQL中的分页查询是Web应用中常见的操作,但随着数据量的增长,`LIMIT`语句在处理大量数据时性能会显著下降。特别是当`OFFSET`值增大时,MySQL需要扫描更多的行来找到需要的数据,这可能导致查询速度变慢,甚至对...
以下是关于`LIMIT`用法的详细说明及其注意事项。 1. **基本语法**: `LIMIT`子句的基本语法如下: ```sql SELECT column1, column2, ... FROM table_name LIMIT [offset,] rows | rows OFFSET offset ``` ...
通过以上讲解,我们了解了`LIMIT`在MySQL中的作用、使用方法以及与`ORDER BY`的配合,以及如何通过优化来提高查询效率。在实际开发中,熟练掌握`LIMIT`的运用能帮助我们更好地处理大数据查询,提升数据库的性能。
本篇文章将详细探讨两种常见的分页方法:假分页和LIMIT分页。 首先,我们来理解什么是假分页。假分页通常在前端实现,它并不涉及数据库级别的分页操作。假分页的工作原理是,服务器一次性获取所有数据,然后在...
Mysql的分页的两个参数 select * from user limit 1,2 ... 您可能感兴趣的文章:详解MySQL的limit用法和分页查询语句的性能分析MYSQL分页limit速度太慢的优化方法mysql limit分页优化方法分享Mysql limit
MySQL中的`LIMIT`子句是用于在查询结果集中限制返回行数的关键字,这对于实现分页功能至关重要。本文将深入探讨`LIMIT`的几种经典用法以及如何对其进行优化,特别是针对大数据量时性能的提升。 **用法一:指定开始...
sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法
在SQL查询中,使用`LIMIT`和`OFFSET`进行分页操作在大数据量的情况下可能会变得极其缓慢。这是因为`OFFSET`需要跳过指定数量的行,而数据库必须读取并忽略这些行,这在数据量大的情况下会涉及大量的I/O操作,尤其是...
MySQL教程是最全面、最详尽的数据库学习资源之一,尤其对于初学者而言,它提供了从基础到高级的全面知识。本教程PDF旨在帮助用户掌握MySQL的各个方面,包括安装配置、数据库设计、SQL语言、存储引擎、事务处理、备份...
MySQL中的`LIMIT`子句是查询结果集控制的关键部分,特别是在处理大数据量时,它能够有效地帮助我们获取所需的数据片段,而不是返回整个结果集。在MySQL中,`LIMIT`可以接受一个或两个参数,用于限制返回的记录数或...
本篇文章将探讨如何在Oracle数据库中实现类似MySQL的`LIMIT`分页功能,以及如何模拟SQL Server的分页方式,并介绍`INTERSECT`和`MINUS`这两个SQL运算符。 首先,`INTERSECT`运算符用于找出两个或多个查询结果中的...
MySQL中的`LIMIT`子句是SQL查询语句中用于限制返回结果集数量的关键字,它在数据检索时非常有用,特别是在处理大型数据表时,可以有效地控制查询的性能和资源消耗。本文将深入分析`LIMIT`的用法,并提供相关的实践...
MySQL 是一种广泛使用的关系型数据库管理系统,它提供了强大的查询功能,其中 ORDER BY 和 LIMIT 两个关键字是最常用的查询语句。然而,在某些情况下,使用 ORDER BY 和 LIMIT 两个关键字可能会出现一些坑,今天...
本文将深入探讨`LIMIT`的用法和注意事项,帮助开发者更高效地使用这一功能。 首先,`LIMIT`子句的基本语法如下: ```sql SELECT column1, column2, ... FROM table_name LIMIT [offset,] rows | rows OFFSET ...
本文将详细介绍MySQL的安装、卸载过程,以及初级使用方法和注意事项。 首先,我们来谈谈MySQL的安装。在Windows操作系统中,你可以从MySQL官方网站下载安装包。安装过程中,确保选择“Custom”安装类型,这样可以...
本文档针对mysql分页之limit慢的问题,使用联合索引在大数据量的情况下优化limit分页的性能
MySQL中的`DELETE`语句是用于从数据库表中删除数据的关键操作。然而,在大量数据处理时,直接使用`DELETE`可能会导致性能问题,因为它可能会锁定整个表,影响其他并发操作。这就是`DELETE ... LIMIT`语句的作用,它...
例如,MySQL支持`LIMIT`后的`OFFSET`,而某些数据库可能需要使用其他方法来实现相同的功能。 7. **优化策略:** 对于非常大的数据集,使用`LIMIT`和`OFFSET`可能效率较低,因为数据库需要扫描和跳过许多行。在这种...