存储过程性能在临时表中发布了150万条记录

时间:2019-05-02 04:20:36

标签: sql sql-server stored-procedures query-performance

我有一种情况,我将在存储过程中执行以下查询,这是sql代理作业的一部分,并且需要数小时才能完成执行。谁能建议一种更好的方法来重写此查询? #ownership表有150万条记录。

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 :(得分:0)

对于此代码的性能,您可以做的最重要的事情是在#ownership上索引ParentNumber, ChildNumber