J'ai besoin d'aide pour optimiser la boucle SQL While ci-dessous. Cela demande à ceux qui ont expérimenté cela d'aider s'il vous plaît. Actuellement, mon code T-SQL dure plus de 25 minutes et je voudrais réduire ce temps autant que possible. J'ai été en mesure d'identifier cette boucle comme un problème majeur et j'apprécierais toute aide pour y arriver.Aide pour l'optimisation de SQL While loop
DECLARE @rownumber int
DECLARE @power_show BIT
DECLARE @AD_show BIT
set @rownumber = 0
--FOR EACH ROW CONTAINED IN MY TEMPTABLE
WHILE @rownumber < @rowcounter
BEGIN
set @rownumber = @rownumber + 1
-- THE VARIABLES
DECLARE @record_no as BIGINT
DECLARE @phone_name VARCHAR(30)
DECLARE @messagepriority as INTEGER
DECLARE @phone_number VARCHAR(30)
DECLARE @phone_id BIGINT
DECLARE @questionMessage BIGINT
SELECT
@phone_name = n.phone_name, @phone_number =n.phone_number, @messagepriority =n.messagepriority, @phone_id=n.phone_id ,
@AD_show=n.AD_show, @power_show=n.power_show
FROM
#temporary_phonetable n WITH(NOLOCK)
WHERE n.rownumber = @rownumber
--EXECUTE STOREDPROC ADDMESSAGETOQUEUE WHICH RETURNS THE ROWID OF THE NEWLY CREATED ROW, IF ANY
SELECT @record_no = sp_queryExecute AddMessageToQueue(@phone_number, @responsemessages, @dateresponsessent, @savednames, @userid, un.messagepriority, @responsetype, un.AD_show, un.power_show, @service_provider, @PhoneType)
If(@questionid > 0)
BEGIN
-- EXECUTE STOREDPROC ADDQUESTIONMESSAGE WHICH RETURNS THE ROWID OF NEWLY CREATED ROW, IF ANY
SET @questionMessage = sp_queryExecute AddQuestionMessage(@questionid,@phone_id, @record_no, DATEADD(d, 30, GETDATE()))
END
-- ADD THE NEW ROWID TO THE TEMP TABLE
UPDATE #temporary_phonetable SET record_no = @record_no, [email protected]
WHERE phone_number = @phone_number AND rownumber = @rownumber
END
Combien d'articles traitez-vous? Êtes-vous sûr qu'il n'y a pas de blocs pendant votre traitement? Est-il possible d'introduire le code sp dans la requête ci-dessus afin que nous puissions voir s'il existe un moyen de faire cette opération de manière basée sur un ensemble? –