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”,共同学习,共同成长!!!
在数据库的开发中,当PL/SQL语句很复杂的时候,我想写一些Log,就像java的Log4j那样。这样就可以很好的跟踪程序的运行情况。在网上找到的文章不是很好用,修改了一下。 1:在Oracle服务器上建立一个目录并指定权限(我这个是unix的。windows…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。