问题描述
贝洛,问问汤姆队。
我需要构建一个连接到18c Oracle数据库的报告。
有很大的表格,我需要分页结果。我想在报告中显示每页50行。
自Oracle 12以来,我已经阅读了有关Fetch,Offset功能的信息。我也有这些功能比旧的rownum慢。对吗?你推荐哪一个?
2.如何使用上面推荐的方法获得50行分页?
提前感谢。
我需要构建一个连接到18c Oracle数据库的报告。
有很大的表格,我需要分页结果。我想在报告中显示每页50行。
自Oracle 12以来,我已经阅读了有关Fetch,Offset功能的信息。我也有这些功能比旧的rownum慢。对吗?你推荐哪一个?
2.如何使用上面推荐的方法获得50行分页?
提前感谢。
专家解答
存在一个错误,其中可能的fetch first索引成本不正确。这是固定的,并且补丁可以追溯到12.1.0.2:
https://blogs.oracle.com/optimizer/fetch-first-rows-just-got-faster
2.你得到前五十行:
接下来的五十个有:
请注意,当数据在页面加载之间更改时,分页通常会出现问题。当使用偏移时,这可能会导致意想不到的结果。在以下位置阅读有关此的更多信息:
https://use-the-index-luke.com/no-offset
https://blogs.oracle.com/optimizer/fetch-first-rows-just-got-faster
2.你得到前五十行:
select * from t order by ... fetch first 50 rows only;
接下来的五十个有:
select * from t order by ... offset 51 rows fetch next 50 rows only;
请注意,当数据在页面加载之间更改时,分页通常会出现问题。当使用偏移时,这可能会导致意想不到的结果。在以下位置阅读有关此的更多信息:
https://use-the-index-luke.com/no-offset
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




