Oracle 检索rownum的有效机制

Oracle 检索rownum的有效机制,oracle,Oracle,这里有一个快速的。所以我在网上读到了关于rownum的文章,我想看看 哪种调用方式最好,因为基于SQL Optimizer的两种方法都显示了 没有区别 select count(distinct BCC || '~' || BN) BCCN from LINK_TBL where AN = 'abcdefg' and BR = 1 and rownum <= 5; 选择计数(不同的BCC | |'~'| | BN)BCCN 来自链接 其中AN='abcdefg' BR=1 并且r

这里有一个快速的。所以我在网上读到了关于rownum的文章,我想看看
哪种调用方式最好,因为基于SQL Optimizer的两种方法都显示了
没有区别

select count(distinct BCC || '~' || BN) BCCN 
from LINK_TBL 
where AN = 'abcdefg' 
and BR = 1 
and rownum <= 5;
选择计数(不同的BCC | |'~'| | BN)BCCN
来自链接
其中AN='abcdefg'
BR=1

并且rownum只要提供正确的结果,优化器可以根据自己的需要选择解决/重新组织查询。如果您检查解释计划,您可能会发现它们是相同的。

优化器可以选择解决/重新组织您认为合适的查询,只要它提供正确的结果。如果您查看解释计划,您可能会发现它们完全相同。

我怀疑您缺少的是在使用
rownum
时使用
order by
的意义。您发布的两个查询在功能上是等效的。但是,以下两个查询不适用:

select count(distinct BCC || '~' || BN) BCCN 
from LINK_TBL 
where AN = 'abcdefg' 
and BR = 1 
and rownum <= 5
order by BCC || '~' || BN;

select count(distinct BCCN)
from (
select BCC||'~'|| BN BCCN 
from LINK_TBL 
where AN = 'abcdefg' and BR = '1'
order by BCC || '~' || BN
)
where rownum <= 5;
选择计数(不同的BCC | |'~'| | BN)BCCN
来自链接
其中AN='abcdefg'
BR=1

而rownum我怀疑您缺少的是在使用
rownum
时使用
order by
的意义。您发布的两个查询在功能上是等效的。但是,以下两个查询不适用:

select count(distinct BCC || '~' || BN) BCCN 
from LINK_TBL 
where AN = 'abcdefg' 
and BR = 1 
and rownum <= 5
order by BCC || '~' || BN;

select count(distinct BCCN)
from (
select BCC||'~'|| BN BCCN 
from LINK_TBL 
where AN = 'abcdefg' and BR = '1'
order by BCC || '~' || BN
)
where rownum <= 5;
选择计数(不同的BCC | |'~'| | BN)BCCN
来自链接
其中AN='abcdefg'
BR=1

谢谢你的回答。昨晚我进一步分析了这一点和@Allan的输入,它们确实是相同的。我对这东西还不熟悉,所以有点困惑。谢谢你的回答。昨晚我进一步分析了这一点和@Allan的输入,它们确实是相同的。我对这东西不熟悉,所以有点困惑。谢谢你的意见。这很有帮助,但我在这一款上的使用不需要order by。但是这增加了我的学习。谢谢你的投入。这很有帮助,但我在这一款上的使用不需要order by。但是这增加了我的学习。