对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,最后检索记录。
如果只给出一个参数,它表示最大返回的记录数。
以上是本文的全部内容,希望大家能喜欢。
请花些时间与朋友分享这篇文章,或者留下评论,我们要感谢你的支持!