在SQL Server中优化或替换while循环联接

时间:2020-06-24 10:50:53

标签: sql-server join optimization while-loop

我的存储过程有两个while循环,要执行10000条记录需要太多时间。有没有办法降低代码的复杂性。程序的结构如下所示

CREATE PROCEDURE [dbo].[prcAllotApp]
    @DocumentElement XML,
    @IPA varchar(20), 
    @UserID varchar(5),
    @OutStatus varchar(10) OUT
AS
BEGIN
    IF EXISTS (SELECT * FROM #ApplicationDetails)
    BEGIN
        DECLARE @AppCount int
        DECLARE @id int

        SET @AppCount = (SELECT COUNT(Application_id) FROM #ApplicationDetails)
        SET @id = 1

        -- Loop start for selecting Application id (Master loop)
        WHILE (@AppCount > 0)
        BEGIN
            -- All variable declaration
            DECLARE @App varchar(20)
            DECLARE @Count int
            DECLARE @pref int
            DECLARE @U_Code varchar(12)
            DECLARE @MOI varchar(7)
            DECLARE @RemSeat int
            DECLARE @AllotedApp int
            DECLARE @CCode varchar(5)
                
            -- set values
            SET @App = (SELECT Application_id FROM #ApplicationDetails WHERE id = @id)
            SET @Count = (SELECT COUNT(DISTINCT U_Code) FROM S_Preference WHERE App = @App)
            SET @pref = 1

            WHILE (@count > 0)
            BEGIN
                SET commands
                    -- Insert, update in some tables
            END
        END
    END
END

0 个答案:

没有答案