这段程序怎么优化,请高手帮忙
     环境:Sql Server 2000
目的:得到正品、废次品各自的实际重量因为可能有退库的可能所以要减掉退库的量,怎样优化一下,因为我要循环调用此代码,我再查询分析器中执行此代码需要1秒,假如循环的话会很慢的。其中Z_Pt_Weight表中有大约5万条记录并且一直增加。请高手帮忙优化一下,在此先谢谢了。代码如下
     --得到所有的正品重(可能包括退库)
     SELECT @GoodsWeightTotal = SUM ( ISNULL ( Weight_Net , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%') AND JudgeResult = '0'
     --得到所有的次品重(可能包括退库)
     SELECT @SmeltCiTotal = SUM ( ISNULL ( Weight_Net , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%') AND JudgeResult = '1' AND JudgeDuty = '0'
     --得到所有的次品重(可能包括退库)
     SELECT @RollingCiTotal = SUM ( ISNULL ( Weight_Net , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%') AND JudgeResult = '1' AND JudgeDuty = '1'
     --得到所有的次品重(可能包括退库)
     SELECT @CheckCiTotal = SUM ( ISNULL ( Weight_Net , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%') AND JudgeResult = '1' AND JudgeDuty = '2'
     --得到所有的废品重(可能包括退库)
     SELECT @SmeltFeiTotal = SUM ( ISNULL ( Weight_Net , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%') AND JudgeResult = '2' AND JudgeDuty = '0'
     --得到所有的废品重(可能包括退库)
     SELECT @RollingFeiTotal = SUM ( ISNULL ( Weight_Net , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%') AND JudgeResult = '2' AND JudgeDuty = '1'
     --得到所有的废品重(可能包括退库)
     SELECT @CheckFeiTotal = SUM ( ISNULL ( Weight_Net , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%') AND JudgeResult = '2' AND JudgeDuty = '2'
     --得到正品重(包括退库所有的正品重 - 所有的退库正品重 )
     SELECT @GoddsWeight = @GoodsWeightTotal - SUM ( ISNULL ( Weight_Gross , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%')  AND Heat_id <> @HeatId   AND JudgeResult = '0'
     --得到次品重(包括退库所有的次品重 - 所有的退库次品重 )
     SELECT @SmeltCi = @SmeltCiTotal - SUM ( ISNULL ( Weight_Gross , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%')  AND Heat_id <> @HeatId  AND JudgeResult = '1' AND JudgeDuty = '0'
     --得到次品重(包括退库所有的次品重 - 所有的退库次品重 )
     SELECT @RollingCi = @RollingCiTotal - SUM ( ISNULL ( Weight_Gross , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%')  AND Heat_id <> @HeatId   AND JudgeResult = '1' AND JudgeDuty = '1'
     --得到次品重(包括退库所有的次品重 - 所有的退库次品重 )
     SELECT @CheckCi = @CheckCiTotal - SUM ( ISNULL ( Weight_Gross , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%')  AND Heat_id <> @HeatId   AND JudgeResult = '1' AND JudgeDuty = '2'
     --得到废品重(包括退库所有的废品重 - 所有的退库废品重 )
     SELECT @SmeltFei = @SmeltFeiTotal - SUM ( ISNULL ( Weight_Gross , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%')  AND Heat_id <> @HeatId  AND JudgeResult = '2' AND JudgeDuty = '0'
     --得到废品重(包括退库所有的废品重 - 所有的退库废品重 )
     SELECT @RollingFei = @RollingFeiTotal - SUM ( ISNULL ( Weight_Gross , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%')  AND Heat_id <> @HeatId   AND JudgeResult = '2' AND JudgeDuty = '1'
     --得到废品重(包括退库所有的废品重 - 所有的退库废品重 )
     SELECT @CheckFei = @CheckFeiTotal - SUM ( ISNULL ( Weight_Gross , 0 ) )
     FROM     Z_Pt_Weight
     WHERE Heat_Id LIKE (LEFT(@HeatId , 10) + '%')  AND Heat_id <> @HeatId   AND JudgeResult = '2' AND JudgeDuty = '2'
     INSERT QualityArtStaticsJudgeDate ( Cp6_7Date , HeatId , GoodsWeight , SmeltCi , RollingCi , CheckCi , SmeltFei , RollingFei , CheckFei )
     VALUES(@Cp6_7Date , @HeatId , @GoddsWeight , @SmeltCi , @RollingCi , @CheckCi , @SmeltFei , @RollingFei , @CheckFei)