Oracle Rownum分页改写




Oracle Rownum分页改写


—说明:案例来自《




收获,不止SQL优化》



创建测试数据


—drop table test_rownum purge;

SQL
>

create

table
test_rownum
as

select

*

from
dba_objects
;
SQL
>

select

count
(*)

from
test_rownum
;


—75793

SQL
>

alter

session

set
stat免费云主机域名istics_level
=
all

;
SQL
>

set
linesize
1000
SQL
>

set
pagesize
500


分页写法


1

SQL
>

select

*

from

(
select
t.
*,
rownum

as
rn
from
test_rownum t
)
a
where
a.rn
>=
1

and
a.rn

10
;



查看执行计划:




SQL
>

select

*

from

table
(
dbms_xplan.display_cursor
(
null
,
null
,
‘allstats last’
));



分页写法


2

SQL
>

select

*

from

(
select
t.
*,
rownum

as
rn
from
test_rownum t
where

rownum

10
)
a
where
a.rn
>=
1
;



查看执行计划:

SQL
>

select

*

from

table
(
dbms_xplan.display_cursor
(
null
,
null
,
‘allstats last’
));



总结:


写法1的buffer为1080,扫描真实数据为75793条,写法2的buffer只有5,扫描真实数据为10条,性能较写法1有很大改善。

欢迎关注我的微信公众号”IT小Chen”,共同学习,共同成长!!!

相关推荐: Oracle内建包UTL_FILE使用说明

在数据库的开发中,当PL/SQL语句很复杂的时候,我想写一些Log,就像java的Log4j那样。这样就可以很好的跟踪程序的运行情况。在网上找到的文章不是很好用,修改了一下。 1:在Oracle服务器上建立一个目录并指定权限(我这个是unix的。windows…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 12/31 16:58
下一篇 12/31 16:58