【发布时间】:2012-11-27 07:34:58
【问题描述】:
我有一个包含数百万条记录的表。
我想确保只要 Oracle 找到第一个匹配项,它就会停止查找。
select * from table1
where table1.column1 = 'somevalue'
AND table2.column2 = 'somevalue'
AND rownum = 1
我听说 Oracle 将获取所有符合 column1 和 column2 条件的行,然后只应用 rownum 过滤器来获取第一行,这违背了目的。
【问题讨论】:
-
Oracle SELECT TOP 10 records 的可能重复项
-
@ShivanRaptor ...不,他们没有提到如何不使用 rownum 以使 oracle 仍然扫描整个表而不是在第一次匹配时停止。
-
@shivan 请不要编辑问题以包含指向尽可能重复的链接。目前只有您这么认为,因为没有其他人投票关闭。如果问题被关闭,它将被自动添加。
-
Oracle 将在第一次匹配时停止,除非您在 rownum 过滤器之前进行排序,就像这样
select * from (select * from X order by Y) where rownum =1使用排序 Oracle 可能必须收集所有行以确定排序以确定哪个是首先。
标签: sql oracle oracle11g rownum