问题描述
嗨,
我做了一些测试,似乎row_number() over (按null排序) 可以用作oracle的rownum伪列的替代方法。这种行为是设计的还是只是巧合?
我之所以尝试这样做,是因为使用rownum (与row_number() 相比) 分页时某些查询非常慢,并且我不能简单地将order by子句移动到row_number() 中
有关示例,请参见livesql链接。
我做了一些测试,似乎row_number() over (按null排序) 可以用作oracle的rownum伪列的替代方法。这种行为是设计的还是只是巧合?
我之所以尝试这样做,是因为使用rownum (与row_number() 相比) 分页时某些查询非常慢,并且我不能简单地将order by子句移动到row_number() 中
有关示例,请参见livesql链接。
专家解答
从某种意义上说,我们不需要真正进行排序,例如
但是我想看到一些确切的证据表明它比rownum快。
select row_number() over (order by null) as rnum, i.* from invoice i Statistics ---------------------------------------------------- 1 recursive calls 0 db block gets 71 consistent gets 0 physical reads 0 redo size 30365 bytes sent via SQL*Net to client 1334 bytes received via SQL*Net from client 68 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1000 rows processed复制
但是我想看到一些确切的证据表明它比rownum快。
SQL> create table t pctfree 0 as 2 select rownum x from 3 ( select 1 from dual connect by level <= 10000 ), 4 ( select 1 from dual connect by level <= 10000 ); Table created. SQL> set timing on SQL> begin 2 for i in ( 3 select rownum, t1.* from ( 4 select t.* 5 from t 6 order by t.x 7 ) t1 8 ) 9 loop 10 null; 11 end loop; 12 end; 13 / PL/SQL procedure successfully completed. Elapsed: 00:01:00.70 SQL> SQL> set timing on SQL> begin 2 for i in ( 3 select row_number() over (order by null) as rnum, t.* 4 from t 5 order by t.x 6 ) 7 loop 8 null; 9 end loop; 10 end; 11 / PL/SQL procedure successfully completed. Elapsed: 00:01:05.19复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
655次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
625次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
530次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
479次阅读
2025-04-22 00:20:37
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
475次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
457次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
449次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
405次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
369次阅读
2025-04-15 14:48:05
Oracle数据库Hint大全,31个使用案例,速来下载!
陈举超
343次阅读
2025-04-16 21:25:19