现在这段语句运行一次要20秒,返回8千多条记录.数据还会不断的增加,后面不知会怎样......D7 + sql server 2000D7中用Adoruery和Adostoredproc所用的时间是一样的.求优化.
select c.预定id,c.构成ID,c.产品编号,c.部品品番,c.客户品番,e.客户名称,c.是否下单,c.部品个数,c.预定数量,c.部品个数*c.
        
       预定数量 as 部品总数,d.订购数量,c.交货日期 ,isnull(f.供应商编码,0) as 供应商编码,isnull(f.供应商名称,0) as 供应商名称        from (select b.id as 预定id,a.构成ID,a.产品编号,a.部品品番,b.客户品番,b.客户编号,b.是否下单,a.部品个数,b.交货日期,             b.预定数量,b.生产周期,b.采购周期,b.安全周期 from (select 构成id,产品编号,部品品番,部品个数 from composing where 是否出货='N' and 社内生产='N') a 
            
             join (select 产品编号,客户编号,客户品番,是否下单,交货日期 ,预定数量,生产周期,采购周期,安全周期,id,构成id from destine where 备注<>'预定取消' and 是否出货='N') b              on a.构成id=b.构成id and a.产品编号=b.产品编号) c              left outer join (select 预定id,产品编号,部品品番,sum(订购数量) as 订购数量 from pu_o where 是否出货='N' group by 预定id,产品编号,部品品番) d              on c.预定id=d.预定id and c.产品编号=d.产品编号 and c.部品品番=d.部品品番              left outer join (select distinct 客户编号,客户名称  from client) e on c.客户编号=e.客户编号              left outer join (select distinct 供应商编码,供应商名称,部品品番 from quoted_p where 使用状态='Y') f on c.部品品番=f.部品品番              where (C.预定数量<>0) and (d.订购数量 is null) and (convert(varchar(10), getdate()+c.生产周期+c.采购周期+c.安全周期,120)>(c.交货日期)) 
             order by c.部品品番,c.预定id,c.构成id,c.产品编号