MySQL的详细解释,MSSQL和Oracle的分页方法

本文介绍了MYSQL,MSSQL、Oracle分页方法。分享给你供你参考。具体分析如下:

分页查询是web开发中最常用的技术之一。

MySQL中的分页查询

注:


M =(pagenum-1)* PageSize;N = PageSize;


PageNum将要查询的页面数,和pageSize是为每个查询的数据量。

方法1:


从表顺序选择*,按id限制m,n;


这句话的意思是查询M + N记录,删除以前的M,并返回到N记录。毫无疑问,这个查询可以实现分页功能,但是如果m的值较大,则查询的性能将较低(页面的数量保持在后面,查询性能较低),因为MySQL也需要扫描m + n记录。

方法二:


SELECT * FROM表ID > # max_id #订单ID值n;


每一次的查询将返回的记录,但没有像1扫描我的记录,在大量的数据分页,性能将明显优于1,但必须每个分页查询查询查询(ID)的最大(或最小ID)查询问题。有时我们不能得到一个查询(最大(或最小)的ID),如在第三页当前,第五页数据的查询,查询的方法可以帮助你。

方法三:

为了避免两实施不能查询,还需要使用限制M N条款,为了性能,需要M值小,如需要在第三页,查询第五页,10页,为# max_id #的最大电流ID第三页:




SELECT * FROM表ID > # max_id #订单ID限制20,10;


事实上,查询方式部分是为了解决二级问题,但如果目前在第二页上,您需要查询第一百页或1000页,性能仍然较差。

方法四:

代码如下:从表中选择*作为内部连接(从表顺序中选择ID)。

这个查询也是一样的。M的值可能很大,但由于内部子查询只扫描字段而不是整个表,因此性能比的方式查询更强,和查询可以解决两个和三个不能解决的问题。

模式五:

代码复制代码如下:从id为>的表中选择*(从ID中选择表顺序);

查询是一样的四,同时扫描字段的查询,并且效果四。至于性能,模式五的性能略优于四,因为模式5不需要与表关联,但一个简单的比较。

二、sql服务器分页查询

方法1:

适用于SQL Server 2000 2005


选择顶部页面大小*
从表1
身份证不在

选择顶部的页面大小*(页码1)从表1订单ID的ID

订单ID


方法二:

适用于SQL Server 2000 2005

-顺序写作:


选择顶部页面大小*
从表1
在哪里

选择空(max(ID),0)


选择顶部的页面大小*(页码1)+ 1的ID从表1订单ID
一)

订单ID


-降写:




选择顶部页面大小*
从表1
其中ID

选择空(min(ID),0)


选择顶部的页面大小*(页码1)+ 1的ID从表1订单ID号
一)

通过id倒序


方法三:

适用于SQL Server 2005


选择顶部页面大小*


选择row_number()在(订单ID)作为rownumber从表1,*
一)
在rownumber >页面大小*(页1)


页面大小:每页的行数;页码:页。当使用时,请将页面大小和页面大小*(页数- 1)替换成数字。

其他选项:如果没有主键,可以使用临时表或计划三,但效率会很低。

提出优化时,利用主关键字和索引,提高查询效率。

通过SQL查询分析器,显示比较:我的结论是:

分页方案2:(使用id大于多少和选择顶部分页)是最有效的,需要拼接SQL语句

分页方案1:(不使用和选择顶部分页)效率,需要拼接SQL语句

分页方案三:(使用SQL的游标存储过程分页)是最糟糕的,但却是最常见的。

三、oracle分页查询

方法1:


SELECT * FROM
(选择A *,rownum rn从
(从选项卡A中选择*)
在rownum <= 40)
其中RN = 21;


此分页的效率和效率低于以下。当数据量较大时,Oracle将自动优化。

方法二:


SELECT * FROM
(选择C *,rownum RN从标签C)在21和40之间的RN


与这两种方法相反,在大多数情况下,第一个查询比第二个查询效率更高。

这是由于CBO优化模型,Oracle可以将外层查询条件推到内部查询,以提高内部查询执行的效率。

对于第一个查询,查询哪里rownum二层40可以推到Oracle查询的内层,Oracle查询的结果一旦超过rownum的限制,对查询的终止将返回结果。

第二个查询语句是由于查询的第三级上存在21到40之间的查询条件,而Oracle不能将第三级查询条件推到最内层。

(即使它是推到内层,没有意义,因为最内层查询不知道RN代表)。因此,二的查询语句,最内层的Oracle返回到中间层的数据满足条件,而中间层返回到外层所有数据。数据过滤是在外层的水平,这显然要比第一个更高效。

上面的查询不仅是对单个表的简单查询,而且也是对最内层查询的查询,它与多表联合查询或最内层查询一样复杂。

希望本文能帮助您设计数据库程序。