`

Oracle中子查询两种实现方式有何不同?

阅读更多

在研究Hibernate如何实现分页的?时,看到Hibernate针对Oracle 8i9i实现分页的sql不大一样, 于是就想问下,这两种实现有什么区别?是什么原因造成的这种区别?

 

8i中的sql是这样的: select * from ( select row_.*, rownum rownum_ from ( realSQL )  row_ ) a where rownum_ <= ? and rownum_ > ?

9i的是这样的:select * from ( select row_.*, rownum rownum_ from (  realSQL ) row_ where rownum <= ?) a where rownum_ > ?

 

区别在于,9i中,把原来外面的rownum_ <= ?放到了里面(这里只考虑rownum_的实际意义,不考虑它命名上的不同)。

 

我的疑问:8i9iOracle这边做了什么调整导致了这个变化?还是Hibernate后来发现问题后,借此机会做了改动?

对此疑问,我的猜测: 9i的写法,可以减少临时表a的大小,从而在Oracle层面上减少内存占有,也就加快了执行速度。

 

对否?沾边否? 贴在这里,引下玉。

分享到:
评论
2 楼 mikewang 2009-12-17  
9i 的文档上写的很清楚, 内层的条件会被先扩展开。
这个查询只查到你需要的最大的rownum, 从而实现优化。
1 楼 miaow 2009-12-17  
猜测:可以让DB用FIRST_ROWS优化?
但是这个优化Hint在8i中貌似也有。

相关推荐

    Oracle:子程序和程序包(.ppt)

    子程序可以分为过程和函数两种类型。过程主要是用来执行一系列操作,而不返回值,而函数执行操作后会返回一个结果。在Oracle中,创建过程的语法如下: ```sql CREATE [OR REPLACE] PROCEDURE &lt;procedure name&gt; [()]...

    Oracle函数列表速查

    Oracle函数是Oracle数据库中用于数据处理的重要工具,分为单行函数和组函数两种类型。单行函数处理单个数据行,对每一行都返回一个结果,而组函数则对多行进行聚合操作,如计数、求和等。 单行函数主要包括字符函数...

    oracle常用函数和类型

    Oracle提供了许多其他功能,如数学函数、转换函数、日期和时间函数、集合函数、聚合函数等,使得数据库操作和查询变得极其灵活和强大。理解并熟练使用这些函数和数据类型是Oracle数据库管理的基础。

    oracle培训资料(整理版)

    分析函数是Oracle数据库中的一种高级查询工具,它允许在聚合数据时对行进行排序并处理。这些函数在处理分组数据时特别有用,可以进行窗口化操作,提供更灵活的数据分析能力。主要的Oracle分析函数包括: 1. RANK()...

    ORACLE双机热备解决方案(镜像—共享)

    ### ORACLE双机热备解决方案:镜像与共享解析 #### 需求背景与问题阐述 在现代企业环境中,数据库系统的稳定性和连续性对于业务的正常运行至关重要。尤其是对于那些依赖于ORACLE数据库的关键业务系统,任何一次...

    ORACLE常识.txt

    在PL/SQL中,有两种注释方式:单行注释(`--`)和多行注释(`/* ... */`)。例如: ```sql -- 示例单行注释 /* 示例多行注释 */ ``` 这些注释可以帮助开发者更好地理解代码的功能和意图。 ### 5. UPPER 和 LOWER ...

    基于Oracle9i的复制技术及应用.pdf

    复制技术可以分为同步复制和异步复制两种主要类型。同步复制确保在任何时候所有复制节点的数据都保持一致,而异步复制允许复制节点间的数据在一定时间内保持不同步。 2. Oracle数据库复制类型 Oracle数据库提供多种...

    oracle习题[文].pdf

    Oracle是一种广泛使用的关系型数据库管理系统,它提供了丰富的功能和语法用于数据存储、管理和查询。以下是对题目中涉及的Oracle知识点的详细说明: 1. **函数MOD**:MOD函数用于求两个数相除后的余数。在例子中,...

    PL-SQL包的开发

    PL-SQL包是一种在Oracle数据库中组织和管理程序代码的有效方式。通过将相关的数据类型、常量、变量、异常以及子程序(包括过程和函数)组合在一起,可以构建出更为结构化的程序模块。这有助于提高代码的复用性、维护...

    数据库复习材料.。。。。。。。。。

    4. **以同一种语法结构提供两种使用方法**:既可以嵌入到宿主语言中使用,也可以独立地交互式使用。 5. **语言简洁,易学易用**:SQL语法简单直观。 #### 十六、聚簇索引 - 聚簇索引是指索引项的顺序与表中记录的...

    C#编程经验技巧宝典

    43 &lt;br&gt;0061 树的实现 44 &lt;br&gt;3.2 排序 48 &lt;br&gt;0062 如何实现选择排序算法 48 &lt;br&gt;0063 如何实现冒泡排序算法 49 &lt;br&gt;0064 如何实现快速排序算法 50 &lt;br&gt;0065 如何实现插入排序算法 ...

    盛世桃源通用文件管理系统 v2.5 for .net 2.0/3.0/3.5.zip

    21.在空间中上传文件或添加外部网址两种方式。 22.常用人员功能,可将他人加为常用并分组规划,并查看对方的信息及发送短消息。 23.可对自己的所有转发的文件进行查看及管理,批量删除。 24.目录及文件签收区,...

    SQL应用培训资料

    - **多表查询**:通过`JOIN`关键字连接多个表,实现跨表的数据查询。 #### 五、DML语句应用 - **INSERT语句**:向表中插入新行。 - **UPDATE语句**:更新表中的现有行。 - **DELETE语句**:删除表中的行。 #### ...

    桃源网络硬盘.Net v5.8.zip

    20.在空间中上传文件或添加外部网址两种方式。 21.好友功能,可将他人加为好友,并查看对方的指定好友文件及发送短消息。 22.可将好友分组规划,并按分组进行文件共享给指定组的好友。 23.可对自己的所有共享和...

    桃源网络硬盘.Net v5.5.rar

    在空间中上传文件或添加外部网址两种方式。 21.好友功能,可将他人加为好友,并查看对方的指定好友文件及发送短消息。 22.可将好友分组规划,并按分组进行文件共享给指定组的好友。 23.可对自己的所有共享和提取进行...

Global site tag (gtag.js) - Google Analytics