1、如何使用Oracle的Rownum来进行SQL语句按列排序的分页数据提取;
2、实现有排序条件的单一SQL语句中Rownum的正序(是指rownum按1、2、3依次递增),而不是让人抓狂的乱序;
3、 多个同向排序列的单一SQL也能实现它的Rownum输出的正序。
利用Oracle的虚列Rownum,就可以通过SQL语句来完成数据提取的分页处理。
这两个数据列,我们先来看看,如果一个列没有索引时,所输出的ID列的值,看起来可能是乱七八糟的。因此,为了在排序条件下的分页输出,就需要:
语句1:select * from (
select rownum id, a.* from
(select * from sm_shoushumc order by shoushumc) a
where rownum <= 2000 )
where id>1990;
此语句完成按shoushumc排序的10行一页,取得第200页的功能。但是我们还是希望这样的SQL语句可以简单一些,比如:
语句2:
select a.* from
(select ROWNUM id, t.* from sm_shoushumc t where rownum<=2000 order by t.shoushumc ) a Where id>1990;
如果能够直接达到我们的目标就是帅多了,但是这两个语句在通常情况下可能是不等效的,这也是由Rownum的特性所决定的。
主键的通常有3个特性(此处仅指单列的主键):
1.它必定是一个索引项;
2.它是一个NOT NULL的列;
3.唯一性。
你要想让有排序条件的单一的SELECT语句的结果中rownum顺序就是1、2、3、4……的正序(即自然顺序),那就是该列必须是索引项与NOT NULL的属性。这样的列能被有效索引检索,分页时的性能也很不错。
要注意用于Order by中的项目它必须由合理的索引所包含,要想看看一个列是否在有效索引中,只要在相应的SQL语句中使用执行计划查看一下就可以了。因此了解了Rownum与Order By中列的关系,大数据量的分页提取,不仅性能更好,而且SQL语句的简单,就不容易那么让人抓狂了。
分享到:
相关推荐
使用 ROWNUM 对结果进行分页,例如返回结果中的第 6 到第 10 条记录: ```sql select * from ( select a.*, rownum as rn from css_bl_view a where capture_phone_num = '(1) 925-4604800' ) b where b....
对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、、!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来...
通过以上介绍,我们可以看到在Oracle中使用`OFFSET`与`FETCH FIRST`结合`ROWNUM`可以有效地实现分页查询。这种方法不仅简单易用,而且能够满足大多数场景下的需求。当然,在实际应用中还需要根据具体情况进行调整和...
Oracle中rownum的使用
在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`>`, `>=`, `=`等)时,容易引发...
常用的 Oracle 分页查询方法有三种:使用 ROWNUM、使用 ROW_NUMBER() 和使用子查询。 第一种方法:使用 ROWNUM Oracle 的 ROWNUM 函数可以用来实现分页查询。基本格式如下: ```sql SELECT * FROM (SELECT A.*,...
在早期版本的Oracle中,通常使用`ROWNUM`来实现分页功能。 #### 三、基于ROWNUM的分页查询 基于`ROWNUM`的分页查询是Oracle中最常见的分页方法之一。它通过两层嵌套查询实现,具体格式如下: ```sql SELECT * ...
ROWNUM 是 Oracle 专门用于分页查询的伪列,OFFSET Fetch 是 Oracle 12c 及更高版本中引入的分页查询方法。 知识点 2: 分页查询中的排序问题 在分页查询中,如果在 ORDER BY 子句中指定了排序列,会出现排序列不是...
总结,Oracle的PL/SQL编程中的分页技术是数据库管理的重要组成部分,通过合理使用`ROWNUM`、窗口函数以及`OFFSET/FETCH`等方法,可以有效地实现高效且灵活的分页查询,同时优化系统性能,提升用户体验。
### Oracle ROWNUM 使用详解与 SQL Server 区别 在数据库操作中,ROWNUM 是一个非常重要的伪列,主要用于返回查询结果的行序号。它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、...
同时,对于大数据量的场景,还可以考虑使用Oracle的分页功能,如RANGE BETWEEN或者Oracle 12c引入的FETCH FIRST子句,这些方法可以更高效地处理分页。 此外,对于Java应用,可以使用ORM框架如Hibernate或MyBatis来...
Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种高效且灵活的方式。本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在...
根据所提供的信息,我们可以提炼出以下关于“ORACLE分页查询效率”的相关知识点: ### 一、Oracle中的分页查询 #### 1.1 分页查询的重要性 - **背景介绍**:在实际应用中,数据库查询结果往往非常庞大,一次性加载...
- 除了使用`ROWNUM`之外,还可以采用其他技术来实现分页查询,例如使用`OFFSET/FETCH`关键字(在Oracle 12c及以上版本支持),这样可以直接指定跳过的行数和需要返回的行数。 #### 总结 通过以上分析,我们可以...
不过,ROWNUM有个限制,它不能与WHERE子句一起使用来实现分页,因为Oracle在执行WHERE之前就已经计算了ROWNUM。为了解决这个问题,可以使用子查询或临时表。 另一种更高效的方法是使用Oracle的`ROW_NUMBER()`函数,...
2. **构造SQL查询语句**:Oracle数据库支持使用`ROWNUM`进行分页查询。基本的SQL模板为: ```sql SELECT * FROM (SELECT t.*, ROWNUM rnum FROM (YOUR_SELECT_QUERY) t WHERE ROWNUM ) WHERE rnum >= :startRow `...
Oracle数据库支持多种方式进行分页,包括使用ROWNUM、ROWNUM BETWEEN、游标以及通过视图和存储过程。下面我们将详细探讨这些方法,并结合Java如何进行操作。 1. **ROWNUM分页**:Oracle中的ROWNUM伪列可以用来实现...
Oracle ROWNUM学习 Oracle ROWNUM是Oracle系统顺序分配的行号,用于限制查询返回的总行数。ROWNUM是一个伪字段,不能以任何表的名称作为前缀。下面是对ROWNUM的详细讲解: 一、ROWNUM的基本用法 ROWNUM是一个伪...
使用JDBC时,可以结合LIMIT和OFFSET子句(Oracle不支持LIMIT,但可以通过ROWNUM模拟)来实现分页,而在Hibernate中,可以使用Criteria API或HQL的`setFirstResult`和`setMaxResults`方法来实现相同的功能。...
Oracle数据库在处理大数据量查询时,分页查询是一种常见的优化策略,目的是限制返回结果集的大小,加快查询速度,提供更好的用户体验。本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询...