Ребята помогите в такой проблеме.
Для некоторых деталей запрос на входимость выполняется очень долго - 5 минут 8 секунд. При этом выдает 29557 записей.
Клиент делфи вылетает через 3 минуты с ошибкой Timeout SQL operation.
Вопрос в том как в процедуре закончить рекурсивный цикл по времени скажем через 3 минуты ?
Или может как то оптимизировать запрос ?
/* ВЕДОМОСТЬ ВХОДИМОСТИ
(с) 29.12.2008 RESEARCH */
CREATE PROCEDURE [dbo].[PRIM] (@IZD VARCHAR(30)) AS
SELECT 1 UR,@IZD CHTO,@IZD CUDA,1 VX INTO #PRIM
DECLARE @UR INT
SET @UR=1
WHILE @@ROWCOUNT>0
BEGIN
SELECT @UR=@UR+1
INSERT INTO #PRIM
SELECT @UR UR,B.CHTO, B.CUDA, SUM(B.KVO*P.VX) VX FROM BAZSPEC B, #PRIM P
WHERE (B.CHTO=P.CUDA) AND (P.UR>=@UR-1)
GROUP BY UR,B.CHTO,B.CUDA
END
SELECT CUDA, SUM(VX) TOTAL INTO #TOTAL FROM #PRIM
GROUP BY CUDA
SELECT PR.UR,UPPER(PR.CHTO) CHTO, dbo.NAM(PR.CHTO)NAMCHTO,UPPER(PR.CUDA) CUDA,dbo.NAM(PR.CUDA)NAMCUDA,PR.VX,TTL.TOTAL FROM #PRIM PR
LEFT JOIN #TOTAL TTL ON TTL.CUDA=PR.CUDA
ORDER BY 1 DESC ,4,2
RETURN @UR
GO