做“偏移”在Oracle中,读取所有数据。
我知道MySQL中的Offset 10000限制20
读取了从第一到10020的所有数据,并丢弃了第一个10000数据。 Offset 10000行在Oracle中仅fetch下一个20行
工作相同吗?
I know that OFFSET 10000 LIMIT 20
in Mysql reads all data from first to 10020, and discards first 10000 data.
Does OFFSET 10000 ROWS FETCH NEXT 20 ROWS ONLY
in Oracle work the same?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,但是当然,它必须读取排序顺序的行比例,
例如
读取每一行,以便对它们进行排序,并
读取10个部门的每一行,然后可以对它们进行分类。
(在一些特殊情况下,我们可以用索引等跳过,但这是一个单独的讨论)。
回到FIRST /偏移时,实际上,我们正在修改需要满足需求的查询:
成为
因为我们可以这样做
以符合您的获取 /偏移需求。
No, but of course it must read the proportionate of rows to satisfy the ordering sequence,
eg
reads every row so they can be sorted, and
reads every row for department of 10 and then can sort them.
(There's a few special cases where we can skip that with indexes etc, but that's a separate discussion).
Coming back to FETCH FIRST / OFFSET, in effect we are amending the query to satisfy that need:
becomes
because then we can do
to match your FETCH/OFFSET needs.