写了一段SQL 
select a.*,h.*,h1.*,h2.* from 
(select * from .....)  a 
left join  (select * from ...) h on a.*=h.*
left join  (select * from ...) h1 on a.*=h1.*
left join  (select * from ...) h2 on a.*=h2.*效率很差。。h2前都还好,但是到h2以后  就非常慢了。。求解!
具体的语句 如下:
select a.*,case when isnull(a.FName,'') = '' then 0 else isnull(h.fqty,0) end as fgryl,isnull(h1.fqty,0) as fckkc, isnull(h2.fprintqty,0) as fprintqty,
case when isnull(a.fqty,0) - isnull(h.fqty,0) +isnull(h2.fprintqty,0) <0 then 0 else isnull(a.fqty,0) - isnull(h.fqty,0)+isnull(h2.fprintqty,0) end  as fck
 from 
 ( select c.fitemid,c.fspid,c.fstockid,cast(isnull(c.FSPID,'') as varchar(8))+cast(isnull(c.FStockID,'') as varchar(8))+isnull(f.fname,'') as fwy,
isnull(d.FHelpCode,'') as FHelpCode,isnull(c1.FName,'') as FMachinePos,isnull(c2.fname,'') as fstockname,d.F_103 as fpjh,f.fname as fscxb,isnull(d.F_105,'') f_105,d.fnumber,d.fname,g.FName as funitname 
,sum(c.FAuxQtyMust) as fqty
from icmo a left join ppbom b on a.finterid = b.FICMOInterID
left join ppbomentry c on b.finterid = c.finterid
left join t_stockPlace c1 on c.FSPID = c1.FSPID  AND c1.FSPID<>0
left join t_Stock c2 on c.FStockID = c2.fitemid  AND c2.FItemID<>0
left join t_icitem d on c.fitemid = d.fitemid
left join t_MeasureUnit g on c.FUnitID = g.FMeasureUnitID
left join t_item f on a.FHeadSelfJ0193 = f.fitemid
where a.finterid in(20380,20381)  group by c.fitemid,c.FSPID,c.FStockID,d.F_105,d.fnumber,d.fname,d.FHelpCode,c1.fname,c2.fname,d.F_103,g.FName,f.fname) a 

 left join (select fitemid,FStockPlaceID,fstockid,sum(ICInventory.FQty) as fqty from ICInventory group by fitemid,FStockPlaceID,fstockid) h 
on a.fitemid = h.fitemid and a.fspid = h.FStockPlaceID and a.fstockid = h.fstockid
 left join (select ICInventory.FItemID,SUM(ICInventory.FQty ) as fqty from ICInventory inner join t_Stock on ICInventory.FStockID = t_Stock.FItemID 
and isnull(t_Stock.F_102,0) =1 group by ICInventory.FItemID) h1 
on a.fitemid = h1.fitemid 
 left join (select c.fitemid,c.fspid,c.fstockid,sum(isnull(c.FAuxQtyMust,0) - isnull(c.FAuxStockQty,0)) as fprintqty  from icmo a 
left join ppbom b on a.finterid = b.FICMOInterID
left join ppbomentry c on b.finterid = c.finterid where a.FStatus = 1 and isnull(a.FHeadSelfJ01121,0) >0 and a.FInterID  not in(20380,20381) 
group by c.FItemID,c.fspid,c.fstockid) h2 
on h2.FItemID = a.FItemID  and a.fspid = h2.fspid and a.fstockid = h2.fstockid 
order by a.FMachinePos ,a.fscxb,a.fnumber