这段程序怎么优化,请高手帮忙
环境: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)