- 爱易网页
-
数据库教程
- Oracle中子查询两种兑现方式有何不同
日期:2014-05-16 浏览次数:20395 次
Oracle中子查询两种实现方式有何不同?
在研究Hibernate如何实现分页的?时,看到Hibernate针对Oracle
8i和9i实现分页的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_的实际意义,不考虑它命名上的不同)。
?
我的疑问:从8i到9iOracle这边做了什么调整导致了这个变化?还是Hibernate后来发现问题后,借此机会做了改动?
对此疑问,我的猜测: 9i的写法,可以减少临时表a的大小,从而在Oracle层面上减少内存占有,也就加快了执行速度。
?
对否?沾边否? 贴在这里,引下玉。
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。