SQL语句优化

                            
我有一系统,系统中有许多MS   SQL的存储过程,其SQL语句实在需要动动手术,敬请各位谋划谋划、指点指点。   
   
  以下就是一段典型代码:  
   
  CREATE   PROCEDURE   Proc_Cal_XX_Fee    
  @Garden   varchar   (5),  
  @Year   smallint,  
  @Month   tinyint  
  AS  
  begin  
  --更新某某费用  
      Update   tbl_A   Set   yfje=A.dtf   From  
          (Select   yzxx.hzbh,   (dtf*ISNULL(ftxs,0))   AS   dtf   From   yzxx,   dtf,   dtft,   zfxx   Where   yzxx.lh=dtf.lh     AND   nf=@Year   AND   yf=@Month  
          AND   dtf.xqbh=@Garden   AND   yzxx.xqbh=@Garden   AND   yzxx.hzbh=zfxx.hzbh   AND   dtft.lc=zfxx.lc   AND   yzxx.lh=dtft.lh)   A,  
        (Select   sfxmid   From   SFXM   Where   mc   like   '%某某费用%')   B  
          Where   tbl_A.hzbh=A.hzbh   AND   tbl_A.sfxmid=B.sfxmid  
            AND   nf=@Year   AND   yf=@Month  
  end  
   
  其中涉及各表的大致结构如下:  
  tbl_A   (hzbh,   nf,   yf,   sfxmid,   yfje,   ...)   //此表保存用户各月各项费用数据  
  yzxx(hzbh,   xm,   xb,   lh,   ....)     //用户的姓名,楼层等  
  zfxx(hzbh,   lh,   lc,   ...)               //各房的面积、楼层等  
  dtft(lh,   lc,   ftxs,   ...)               //此表保存各楼层的分摊系数  
  dtf(lh,   nf,   yf,   dtf,   ...)           //此表保存每月费用  
  SFXM(sfxmid,   mc,   ...)                   //此表保存各项费用编号与名称等  
   
  此类存储过程关联的表过多,作笛卡儿积后所需空间必定不小。  
  请问高手如何做优化,以提高速度。

查看回复