您现在的位置是:首页» windows系统» 分页查询如何实现分页显示,分页查询和流式查询

分页查询如何实现分页显示,分页查询和流式查询

2023-12-05 03:25:58
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家! 分页查询,是一种操作系统里存储器管理的一种技术,可以使电脑的主存可以使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”(page

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

分页查询,是一种操作系统里存储器管理的一种技术,可以使电脑的主存可以使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”(pages)。当不需要时,将分页由主存(通常是内存)移到辅助存储器;当需要时,再将数据取回,加载主存中。相对于分段,分页允许存储器存储于不连续的区块以维持文件系统的整齐。分页是磁盘和内存间传输数据块的最小单位。

1、当需要用到数据时再向系统请求,使系统将数据由辅助存储器传入存储器上,这就叫“需求分页”。它使得系统不需要将全部的程序都放在存储器上,减少了所需要的存储器的数量。所有现代系统都使用按需页面调度(paging)的方式。

2、当系统查看分页表时认为某些数据可能需要用到,而先将数据传到存储器上的行为,就叫做“先行分页”,当存储器够大的话通常会采取这种方式。

3、Unix系统会定期使用sync程序来清理所有经过更动的帧,它会将所有被更动过的帧存到辅助存储器中。Windows系统有时亦会进行类似功能的操作,它可以使新程序在打开时更快速。

1、FROM(SELECT* FROM TABLE_NAME) A--不排序

2、FROM(SELECT a.*, row_number() over(ORDER BY 1) rn--假排序,速度同上

3、FROM(SELECT a.*, row_number() over(ORDER BY c1) rn--真实排序,无法比较速度

4、Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。

5、FROM(SELECT* FROM TABLE_NAME) A

6、其中最内层的查询SELECT* FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM<= 40和RN>= 21控制分页查询的每页的范围。

7、上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM<= 40这句上。

8、选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM<= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM<= 40语句,在查询的最外层控制分页的最小值和最大值。这是,查询语句如下:

9、FROM(SELECT* FROM TABLE_NAME) A

10、对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多。

11、这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM<= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。

12、而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。

13、上面分析的查询不仅仅是针对单表的简单查询,对于最内层查询是复杂的多表联合查询或最内层查询包含排序的情况一样有效。

14、这里就不对包含排序的查询进行说明了,下一篇文章会通过例子来详细说明。下面简单讨论一下多表联合的情况。对于最常见的等值表连接查询,CBO一般可能会采用两种连接方式NESTED LOOP和HASH JOIN(MERGE JOIN效率比HASH JOIN效率低,一般CBO不会考虑)。在这里,由于使用了分页,因此指定了一个返回的最大记录数,NESTED LOOP在返回记录数超过最大值时可以马上停止并将结果返回给中间层,而HASH JOIN必须处理完所有结果集(MERGE JOIN也是)。那么在大部分的情况下,对于分页查询选择NESTED LOOP作为查询的连接方法具有较高的效率(分页查询的时候绝大部分的情况是查询前几页的数据,越靠后面的页数访问几率越小)。

15、因此,如果不介意在系统中使用HINT的话,可以将分页的查询语句改写为:

16、FROM(SELECT* FROM TABLE_NAME) A

wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com