数据库为Oracle8i,当我发完这个贴子时自己搞定了
select a.*
from  表  a ,
(select 字段1,min(字段2) 字段2
 from  r1009  
 group by  字段1) b 
where  a.字段1=b.字段1 and a.字段2=b.字段2
谁来给解释解释第一种写法的慢的原因

解决方案 »

  1.   

    带星的高手别光look啊,给解释解释。@_@~~~
      

  2.   

    select top 1 * from tbl order by fld2 不可以么?
      

  3.   

    楼上的,数据库为Oracle 8i ,刚才验证你的语句是不行的。from  key word not found where expected
      

  4.   

    用join把字段连接起来就好用多了,而且很清晰你写的太乱,很难理解
      

  5.   

    To haitingr(haitingr) ,请问Oracle8i支持join吗,我怎么不知道
      

  6.   

    有没有人用rownum来搞定啊。在oracle中不支持top的
      

  7.   

    exists执行时先执行主查询,再执行子查询,可能是对自连接比较差一点吧,晚上前结帐
      

  8.   

    用explain plan for 看一下,或者set autotrace on监视一下!
      

  9.   

    你就说是用sql plus得了
    select *  from  表名  a 
    where exists
    (select 1
                 from (select 字段1,min(字段2) 字段2 
                       from  表名
                       group by  字段1) 
                 where 字段1=a.字段1 and 字段2=a.字段2)这个算法中你先执行内部select操作,找出第一个最小字段2,然后做了一次关联(第2次select),这时候已经从中找出了你想要的记录来了,你又做了一次select,这次是消耗时间很大的操作,因为如果你第二次选择有300条记录,则第三次要做“表中记录数”*300次选择,感觉是一次无效的多余操作。oracle我没有用过,对不起,希望这次我能对。十分抱歉