基本概念
1、什么是分页查询?
分页查询是指在数据库中查询大量数据时,按照指定的页码和每页显示的记录数进行查询,从而获取到指定范围内的数据。
2、为什么要使用分页查询?
当查询的数据量较大时,一次性返回所有数据会消耗大量的内存和网络资源,影响系统性能,通过分页查询,可以按需获取数据,提高系统性能。
Oracle分页查询方法
Oracle提供了两种分页查询方法:ROWNUM伪列和OFFSET FETCH子句。
1、ROWNUM伪列
ROWNUM是一个伪列,表示返回结果集中的行号,在分页查询中,可以通过ROWNUM对结果集进行筛选,从而实现分页。
语法:
SELECT * FROM (SELECT t.*, ROWNUM rn FROM (SELECT * FROM table_name) t WHERE ROWNUM <= end_row) WHERE rn >= start_row;
table_name
是要查询的表名,start_row
和end_row
分别表示起始行号和结束行号。
2、OFFSET FETCH子句
OFFSET FETCH子句是SQL Server 2012引入的一种分页查询方法,可以在Oracle中使用,它允许直接指定要跳过的行数和要返回的行数,实现分页查询。
语法:
SELECT * FROM table_name OFFSET start_row ROWS FETCH NEXT end_row start_row + 1 ROWS ONLY;
table_name
是要查询的表名,start_row
和end_row
分别表示起始行号和结束行号。
性能比较
1、ROWNUM伪列的性能较差,因为它需要对整个结果集进行排序,然后根据ROWNUM进行筛选,当数据量较大时,性能开销较大。
2、OFFSET FETCH子句的性能较好,因为它可以直接跳过指定的行数,只返回需要的数据,OFFSET FETCH子句需要在Oracle 12c及更高版本中使用。
注意事项
1、在使用ROWNUM伪列进行分页查询时,需要注意ROWNUM的范围是从1开始的,而不是从0开始,在计算结束行号时,需要加1。
2、在使用OFFSET FETCH子句进行分页查询时,需要注意起始行号和结束行号都是从0开始的,在计算起始行号和结束行号时,不需要加1。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/636634.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复