Производительность хранимых процедур - 1,5 миллиона записей во временной таблице - PullRequest
0 голосов
/ 02 мая 2019

У меня есть сценарий, в котором я выполняю следующий запрос внутри хранимой процедуры как часть задания агента sql, и для завершения выполнения требуются часы.Кто-нибудь может предложить лучший подход для переписывания этого запроса?Таблица #ownership содержит 1,5 миллиона записей.

WHILE (@last_update > 0)
BEGIN
 INSERT INTO #ownership
     SELECT DISTINCT
        a.ParentNumber,
         b.ChildNumber
     FROM #ownership a,
     #ownership b
     WHERE a.ChildNumber = b.ParentNumber
     AND NOT EXISTS (SELECT 1
                   FROM #ownership c
                  WHERE c.ParentNumber = a.ParentNumber
                    AND c.ChildNumber  = b.ChildNumber)
     SET @last_update = @@ROWCOUNT
END

1 Ответ

0 голосов
/ 02 мая 2019

Самое важное, что вы можете сделать для выполнения этого кода, это INDEX #ownership на ParentNumber, ChildNumber.

...