- 浏览: 253626 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (232)
- 瞎扯两句 (8)
- 操作系统 (5)
- 工作笔记 (33)
- 设计模式 (1)
- java (57)
- Java IDE (7)
- hibernate (17)
- oracle (46)
- ms sql (2)
- spring (9)
- struts2 (0)
- javascript (16)
- java_code (2)
- java之集合 (2)
- java之线程 (4)
- java之IO (4)
- java之虚拟机 (6)
- java之异常 (0)
- EJB (4)
- XML (4)
- 数据结构-算法 (2)
- 架构设计 (5)
- 配置信息 (2)
- 阅读笔记 (6)
- IT专业英语 (1)
- PI (0)
- 单元测试 (1)
最新评论
在查询中,我们可以注意到,类似于“select xx from table where rownum < n”(n>1)这样的查询是有正确含义的,而“select xx from table where rownum = n”这样的查询只在n=1的时候成立,“select xx from table where rownum > n”(n>1)这样的查询只能得到一个空集。另外“select xx from table where rownum > 0”这个查询会返回所有的记录。这是为什么呢?原因就在于Oracle对rownum的处理上,rownum是在得到结果集的时候产生的,用于标记结果集中结果顺序的一个字段,这个字段被称为“伪数列”,也就是事实上不存在的一个数列。它的特点是按顺序标记,而且是逐次递加的,换句话说就是只有有rownum=1的记录,才可能有rownum=2的记录。
让我们回头来分析一下在where中使用rownum作为查询条件的情况。在rownum取=1,或者rownum <= n (n>1)的时候,没有问题。那么为什么当条件为rownum = n或者rownum >= n时明明有数据却只能得到一个空集呢?假设我们的查询条件为rownum = 2,那么在查询出的第一条记录的时候,oracle标记此条记录rownum为1,结果发现和rownum=2的条件不符,于是结果集为空。
和rownum相似,oracle还提供了另外一个伪数列:rowid。不过rowid和rownum不同,一般说来每一行数据对应的rowid是固定而且唯一的,在这一行数据存入数据库的时候就确定了。可以利用rowid来查询记录,而且通过rowid查询记录是查询速度最快的查询方法。(这个我没有试过,另外要记住一个长度在18位,而且没有太明显规律的字符串是一个很困难的事情,所以我个人认为利用rowid查询记录的实用性不是很大)rowid只有在表发生移动(比如表空间变化,数据导入/导出以后),才会发生变化。
根据我个人理解,rowid是和索引关联的。利用索引时,就是通过索引对应的rowid去具体的表查询的。
让我们回头来分析一下在where中使用rownum作为查询条件的情况。在rownum取=1,或者rownum <= n (n>1)的时候,没有问题。那么为什么当条件为rownum = n或者rownum >= n时明明有数据却只能得到一个空集呢?假设我们的查询条件为rownum = 2,那么在查询出的第一条记录的时候,oracle标记此条记录rownum为1,结果发现和rownum=2的条件不符,于是结果集为空。
和rownum相似,oracle还提供了另外一个伪数列:rowid。不过rowid和rownum不同,一般说来每一行数据对应的rowid是固定而且唯一的,在这一行数据存入数据库的时候就确定了。可以利用rowid来查询记录,而且通过rowid查询记录是查询速度最快的查询方法。(这个我没有试过,另外要记住一个长度在18位,而且没有太明显规律的字符串是一个很困难的事情,所以我个人认为利用rowid查询记录的实用性不是很大)rowid只有在表发生移动(比如表空间变化,数据导入/导出以后),才会发生变化。
根据我个人理解,rowid是和索引关联的。利用索引时,就是通过索引对应的rowid去具体的表查询的。
发表评论
-
oracle sql优化
2013-09-23 14:29 6521.绑定变量 不适用在OLAP系统中。 因为在OLAP中, ... -
阅读笔记 SQL
2013-08-14 18:24 825Start with...Connect By子句递归查询一般 ... -
oracle 锁 分析
2013-06-18 10:57 4731. 分为 tx 和 tm 。 即 行级 和 表级 其中 ... -
Oracle的TX锁(行级锁、事务锁)
2013-06-18 10:04 933问题:如何使用事务? ... -
mysql 时间戳自动更新
2013-04-09 10:24 978-- Table "pnodetail" ... -
阅读笔记
2013-02-07 17:24 431. 在OLTP系统装要注意sql的硬解析,但是在OLA ... -
synonym
2013-02-07 16:58 950建立一个同义词可以排除一个对象名字的限制. 如果你的数据库有多 ... -
oracle schema
2013-02-07 16:50 762A schema is a collection of dat ... -
物化视图的使用分析
2013-02-05 17:27 7811. 在 深入浅出 系列中,作者列举了一个例子来说明。 ... -
Oracle编程艺术阅读笔记-2
2013-01-29 10:40 7741. 位图索引。 不 ... -
Oracle:位图索引与死锁-2
2013-01-28 18:24 833位图索引被存储为压缩的索引值,其中包含了一个范围内的ROWID ... -
Oracle:位图索引与死锁-1
2013-01-28 18:04 865B 树索引更适合索引动态表的 OLTP 环境,而位图索引更适合 ... -
Oracle编程艺术阅读笔记-1
2013-01-24 18:48 8641. 绑定变量。 不使用会产生的影响: 每次运 ... -
JAVA完全控制Oracle中BLOB、CLOB说明
2012-12-28 17:07 847网络上很多关于JAVA对Oracle中BLOB、CLOB类型字 ... -
H2数据库的使用
2012-12-13 18:40 7671.下载h2的jar,例如h2-1.3.170.jar 2.c ... -
JTA
2012-12-05 17:35 972要理解 JTA 的实现原理 ... -
oracle 体系结构
2012-12-03 23:13 716[img][/img] oracle工作原理 ... -
oracle 存储过程实例-4
2012-12-03 23:04 536--错误处理部分。 --自 ... -
oracle 存储过程实例-4
2012-12-03 23:02 842--错误处理部分。 --自定义异常处理 CREATE OR ... -
oracle 存储过程实例-3
2012-12-03 21:42 812PROCEDURE autoissuereturns ( ...
相关推荐
#### 一、分页查询概念及应用场景 在进行数据查询时,特别是对于大型数据库系统来说,一次性获取所有数据可能会导致性能问题,如响应时间过长、服务器资源占用过大等。因此,通常会采用分页查询的方式来优化用户...
在Java开发中,分页查询是一项常见的需求,尤其是在构建大型Web应用时,为了提高用户体验,通常需要对大量的数据进行分页展示。本话题主要探讨如何使用自定义的Java分页标签来实现带条件的分页查询,这将帮助开发者...
在Oracle数据库中,分页查询是一项...总的来说,实现Oracle数据库中的分页查询需要理解ROWNUM的特性和正确使用子查询或存储过程。通过合理利用这些技术,开发人员可以在保证性能的同时,为用户提供流畅的分页浏览体验。
综上所述,实现Oracle中的搜索分页查询需要理解ROWNUM的工作原理,合理地构造子查询和绑定变量,以及考虑是否利用存储过程进行优化。通过这些技术,可以有效地在大量数据中实现分页查询,提供高效且用户友好的数据...
利用ROWNUM进行分页查询,需要注意的是,必须在子查询中使用ROWNUM,否则可能会导致不正确的结果。具体实现如下: ```sql SELECT * FROM ( SELECT t.*, ROWNUM rn FROM ( SELECT * FROM t_xiaoxi ORDER BY cid ...
在Oracle中,实现分页查询有两种常见方法:第一种方法是利用`ROWNUM`伪列结合子查询;第二种方法则是使用`FETCH FIRST`子句(在Oracle 12c及以上版本中可用)。本文将重点介绍第一种方法,并详细解析其背后的原理与...
本文将详细介绍如何利用Oracle中的`ROW_NUMBER()`解析函数来实现高效的分页功能,并通过示例对比不同分页方法的优劣。 #### 传统分页方法的问题 1. **ROWNUM方法**: - **原理**:通过`ROWNUM`为结果集中的每一行...
在 Oracle 中,可以通过 `ROWNUM` 函数来实现简单的分页查询。下面是一段典型的分页查询 SQL 语句: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM ) WHERE ...
其中,“真分页”是指每次只从数据库中查询所需展示的那一部分数据,即按需加载,这种方式可以显著降低数据库压力,提高系统响应速度。“假分页”则是在应用程序启动或用户请求时,一次性将所有数据加载到内存中,再...
在实际应用中,为了提高性能,我们通常使用`ROWNUM`配合`BETWEEN`来实现分页。例如,获取第m到n行的数据,可以这样写: ```sql SELECT * FROM ( SELECT ROWNUM AS rn, id, name FROM student ORDER BY id ) ...
注意这里的`LIMIT`和`OFFSET`是MySQL中的分页语法,其他数据库系统如Oracle、SQL Server可能使用不同的语法,如`ROWNUM`、`FETCH NEXT`等。 3. **执行SQL**:使用Java的JDBC API连接数据库,执行SQL查询,获取结果...
通过以上分析,我们可以看出Oracle中使用`ROWNUM`实现分页查询是一种简单有效的方法。然而,在实际应用中还需要结合具体场景,考虑查询性能、索引利用等因素,以达到最佳的效果。希望本文能够帮助大家更好地理解和...
### 三种数据库利用SQL语句进行高效分页 在数据处理和展示中,分页是一项常见且重要的技术。尤其在数据库查询中,合理地使用分页可以极大地提高...在实际应用中,应根据具体需求和数据库特性灵活选择合适的分页策略。
2. **ROWNUM与子查询结合**:利用ROWNUM函数结合子查询的方式实现分页,通过限制ROWNUM的范围来获取特定页的数据。 3. **条件与排序处理**:对WHERE子句和ORDER BY子句进行智能处理,确保查询的准确性和效率。 ### ...
下面,我们将详细解析几种实现SQL分页查询的方法,并探讨其适用场景。 ### 方法一:使用TOP子句与ROWCOUNT 对于支持`TOP`子句的数据库系统(如SQL Server),可以利用`TOP`来限制返回的行数,再结合`ROWCOUNT`设置...
在Oracle数据库中,实现分页查询主要依赖于`ROWNUM`伪列。`ROWNUM`用于标识行的顺序,在没有特别设置的情况下,它会根据数据在表中的物理存储顺序来分配编号。但当我们需要按照特定字段排序时,简单的`ROWNUM`就显得...
在进行分页查询时,我们可以在SQL语句中添加LIMIT和OFFSET子句(MySQL)或ROWNUM(Oracle)来获取特定范围的数据。 - 例如,MySQL中的SQL语句可能如下: ```sql SELECT * FROM table LIMIT start, count; ``` ...
- 然后,再次使用子查询,将内层查询的结果作为外层查询的数据源,并通过`WHERE`子句限制`ROWNUM`的范围,从而实现分页效果。 3. **变量计算**:题目中还提到了一段Java代码,用于计算分页所需的`pageCount`(即总...
- MySQL中可以使用`LIMIT`关键字实现分页查询,而Oracle则提供了`ROWNUM`伪列。 通过以上介绍,我们可以了解到使用`ROW_NUMBER()`函数结合`OVER()`子句进行分页查询的基本方法及其应用场景。在实际开发过程中,还...
Oracle的ROWNUM是一个非常重要的概念,它在数据库查询中用于限制返回的结果集数量,尤其是在处理大量数据时,如实现分页功能。ROWNUM是一个伪列,即它并不是表中的实际列,而是Oracle在执行查询时动态生成的一个...