不多说,应该用什么?他们希望执行相同的任务。
行数?
select * from IDENTIFIKATOR
where rownum <= 10;
或者获取下一个?
select * from IDENTIFIKATOR
FETCH NEXT 10 ROWS ONLY;
根据进一步的期望 rownum,表面上看起来可能会更快
select * from (select * from IDENTIFIKATOR order by IDENTIFIKATORID )
where rownum <= 10;
基数为 10,成本为 10(普通执行时间为 0.15-0.2 秒(asc 与 desc))
select * from IDENTIFIKATOR
order by IDENTIFIKATORID
FETCH NEXT 10 ROWS ONLY;
基数为 10,成本为 158869(普通执行时间为 1.9s-2s(asc 与 desc))
最佳答案
如果您使用的是 Oracle 12c+,那么我建议您习惯 FETCH
子句。它是 ANSI 标准语法,可在其他数据库中使用。另外,它更加灵活。例如,您可以这样做:
select i.*
from IDENTIFIKATOR i
order by col2 desc
fetch first 10 rows only;
而且,它支持 OFFSET
修饰符。
使用 rownum
执行此操作需要子查询。
另一方面,如果您的代码需要与早期版本的 Oracle 配合使用,那么 rownum
基本上是您唯一的选择。
关于sql - PL/SQL FETCH NEXT 或 rownum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566519/