oracle12c 分组 top n,Oracle 12c中分页查询增强-TOP N SQL

继之前文章中提到的分页查询SQL优化思路提到的分页框架:

SELECT /*+ gather_plan_statistics */ *

FROM (

SELECT *

FROM (

SELECT rownum AS rn, r.owner, r.object_id

FROM (

SELECT /*+ index(t t_idx01) --分页语句 */ owner, object_id

FROM t

ORDER BY object_id) r

)

WHERE rownum <= 10)

WHERE rn >= 1;

我们前文中提到过,需要在排序列中创建索引,借助索引有序特性来避免排序并且利用正确的分页框架实现COUNT STOPKEY特性,在Oracle 12c版本之后,Oracle提供了新的分页TOP N功能,来实现上述分页需求并且极大的减少了代码复杂程度。

参考Oracle 官方文档中的的描述:

f8a790bb813c19b3056ddc719b95fb3c.png

我们可以利用FETCH ROWS ONLY来实现文章分页TOP-N需求代码:

4f509b8c93b7ddb30bc53404a18b7495.png

同样可以SKIP不关心的行数,指定返回相关行:

dfd549835959c900c553734cea6972ff.png

OFFSET关键字可以帮助我们指定跳跃多少行,从第3行,4行开始FETCH:

e324c869a4a34609cf9a6e9c99bedbf5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值