我有一条SQL语句,分拆如下:A = select a.start_usid from table a start with a.objectid = objectId 
connect by a.end_usid=prior a.start_usid
B = 
select a.objectid,a.length,a.start_usid,a.end_usid,a.sort,a.work_id from table2 a start with a.end_usid in A connect by nocycle a.end_usid=prior a.start_usid
C = select a.*,t.end_usid as next_start_usid from B a left join table2 t on a.start_usid=t.end_usid速度很慢,请牛人帮忙!

解决方案 »

  1.   


    select a.*,t.end_usid as next_start_usid from
            (select a1.objectid,a1.length,a1.start_usid,a1.end_usid,a1.sort,a1.work_id 
             from table2 a1
             where exists(select 1 from table a where a1.end_usid=a.start_usid
                          start with a.objectid = objectId  
                          connect by a.end_usid=prior a.start_usid)
             start with a1.end_usid connect by nocycle a1.end_usid=prior a1.start_usid) a
    left join table2 t on a.start_usid=t.end_usid
    --你还是把你涉及到的表结构列出来,再列出些数据,和你要的结果
      

  2.   

    试试在table2表的end_usid和end_usid上建索引。