日期:2014-05-18  浏览次数:20569 次

一个很敏琐的SQL语句的优化
我想采购下单的时候,可以即时查看到,业务定单主产品分解出子物料的需求数,当前库存量,已下单数,实际需求量

下面是SQL语句....各位牛人有啥优化方案


ALTER   PROCEDURE   dbo.Re_形式发票ID_工厂采购
(@形式发票ID   int)
AS   SELECT   dbo.物料表.物料编码   AS   主产品编码,   物料表_1.物料编码   AS   子产品编码,  
            dbo.形式发票明细表.数量   *   dbo.物料配置明细表.数量   AS   需求数,   下单数   AS   下单数,  
            TempTable2.库存数量
FROM   (SELECT   dbo.工厂采购单.形式发票ID,   dbo.工厂采购明细单.产品ID,  
                            SUM(dbo.工厂采购明细单.数量)   AS   下单数
                FROM   dbo.工厂采购单,   dbo.工厂采购明细单
                WHERE   形式发票ID   =   @形式发票ID   AND  
                            dbo.工厂采购单.采购单编号   =   dbo.工厂采购明细单.采购单编号
                GROUP   BY   dbo.工厂采购明细单.产品ID,   dbo.工厂采购单.形式发票ID)  
            TempTable   INNER   JOIN
            dbo.形式发票明细表   ON  
            TempTable.形式发票ID   =   dbo.形式发票明细表.形式发票ID   INNER   JOIN
            dbo.物料配置明细表   ON  
            TempTable.产品ID   =   dbo.物料配置明细表.物料ID   INNER   JOIN
            dbo.物料配置主表   ON   dbo.形式发票明细表.产品ID   =   dbo.物料配置主表.物料ID   AND  
            dbo.物料配置明细表.物料配置ID   =   dbo.物料配置主表.物料配置ID   INNER   JOIN
            dbo.物料表   物料表_1   ON   dbo.物料配置明细表.物料ID   =   物料表_1.物料ID   INNER   JOIN
            dbo.物料表   ON   dbo.物料配置主表.物料ID   =   dbo.物料表.物料ID   INNER   JOIN
                    (SELECT   物料编码,   SUM(库存数量)   AS   库存数量
                  FROM   (SELECT   dbo.物料表.物料编码,  
                                              dbo.物料分仓库配置明细单.期初数量   AS   库存数量
                                  FROM   dbo.物料分仓库配置单   INNER   JOIN
                                              dbo.物料表   ON  
                                              dbo.物料分仓库配置单.物料ID   =   dbo.物料表.物料ID   LEFT   OUTER   JOIN
                                              dbo.物料分仓库配置明细单   ON  
                      &n