对MySQL中限制使用的深入分析

MySQL在使用限制时:当我们使用查询语句时,我们经常返回中间的几行或几行数据,此时您是如何做到这一点的不用担心,MySQL提供了这样一个功能。

SELECT * FROM表限排{抵消抵消| }。

限制条款可用于强制SELECT语句返回的记录specified.limit接受一个或两个数字参数个数,参数必须是整数常数。如果给出两个参数,第一个参数指定返回的第一行的偏移量,和第二参数指定的最大行数返回记录线。0是初始偏移记录(而不是1):为了兼容PostgreSQL,MySQL也支持语法:极限偏差# #。

MySQL > SELECT * FROM表极限5,10; / /检索记录6-15

为了从所有记录集的记录的结尾偏移到一定的偏移量,可以指定第二个1的参数:

从表限制95,1,96,最后检索记录。

如果只给出一个参数,它表示最大返回的记录数:

从表限制5中选择;* 5行搜索

换句话说,等于限制,0,n。

注意极限10和极限9, 1之间的区别:

例如:



复制代码代码如下所示:

SELECT * FROM百科全书,ID > =(

Select Max(ID)来自(

选择ID限90001从百科全书订单ID

作为TMP

限制100);





复制代码代码如下所示:

SELECT * FROM百科全书,ID > =(

Select Max(ID)来自(

选择ID限90000,1从百科全书订单ID

作为TMP

限制100);



同样是采取90000个岗位100个记录,第一句快速或第二句快速。

第一句是取前90001条记录,以ID的最大值为初始标识,然后用它记录100快速定位。

第二句是只取90000条记录中的1条,然后以id值作为起始标记来定位100条记录。

第一句执行result.100行集(0.23)秒

第二句执行result.100行集(0.19)秒

事实上,第二句可以完全简化为:

复制代码代码如下所示:

SELECT * FROM百科全书,ID > =(

选择身份的限制90000,1百科全书

限制100;



直接使用第九万个ID的记录,没有马克斯操作,这在理论上是因为效率高,但在实际使用中,几乎看不到效果,因为返回本身就是id 1的记录,马克斯几乎没有操作可以得到结果,但写得更清楚明了,省去了画蛇的一只脚。

复制代码代码如下所示:

选择前100 *百科全书,ID > =(

选择前90001名马克斯(ID)从(

选择订单ID身份的百科全书

作为TMP





然而,是否执行存储过程或直接编码,瓶颈一直是MS-SQL顶级总是返回到以前的记录。

当数据量很小,如果是数亿的话,效率肯定会低。相比之下,MySQL的限制有很多优点。

实施:

复制代码代码如下所示:

选择ID从百科全书的限制90000

选择身份的限制90000,1百科全书



结果如下:

90000行(0.36)秒

1行集(0.06)秒

MS-SQL只能使用从百科全书执行时间选择前90000的ID是390ms,和相同的运行时间小于MySQL的360ms。

当多个记录使用限值的偏移量时,当记录较少时,偏移量越小,直接使用极限越好,偏移越大,后者越好。

1,当偏移量较小时。

复制代码代码如下所示:

SELECT * FROM yanxue8_visit极限10,10



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

复制代码代码如下所示:

SELECT * FROM yanxue8_visit在VID(> =

选择视频的视频、yanxue8_visit顺序限制

10)限制



很多时候,时间保持在0.0005-0.0006,主要0.0006

结论:当偏移偏移较小,限制直接使用更好。这显示的是子查询的原因。

2,当偏移量很大时。

SELECT * FROM yanxue8_visit极限10000,10

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

复制代码代码如下所示:

SELECT * FROM yanxue8_visit在VID(> =

选择视频的VID限制10000,1 yanxue8_visit秩序

10)限制



很多时候,时间保持在0.0061左右,只有前者的1/3.the更提前的偏移量,更好的后者。

从表限制95,1,96,最后检索记录。

如果只给出一个参数,它表示最大返回的记录数。

以上是本文的全部内容,希望大家能喜欢。

请花些时间与朋友分享这篇文章,或者留下评论,我们要感谢你的支持!