表里有x,y等字段,现在我想查询x最小的那条记录的y,尽管用order by x很容易,但是不用order by也尽量不用子查询等多层查询怎么搞定啊,请多指教当然实际情况要更复杂,x是几个字段进行运算后组合成的,之所以不用order by排序是因为数据量较大,在2-3千万次排序后,oracle的pga内存被吃尽,排查问题后发现很有可能是因为排序的关系。如果用两次查询,先查min(x),再查询一次当x=min(x)的时候的y,就会很影响效率,而且也不知道min是不是就比较省内存,啊啊啊啊,救我
调试欢乐多
select *
from (
select a.*,row_number() over(order by a.x) as rn
from atj a
)
where rn = 1 ;
2: ------------------------------------
select *
from (
select *
from atj
order by x
)
where rownum = 1;
FROM tab
WHERE x = (SELECT MIN (x)
FROM tab)
x可建立索引
你执行一下分析计划看看,另外,使用toad的Optimize SQL产生几条优化的语句看看.