存储过程需要花费大量时间

时间:2017-10-09 13:20:23

标签: sql-server performance stored-procedures

我的数据库中有一个存储过程。当我调用该存储过程时,有时需要1分钟,有时需要10分钟,有时需要甚至更多才能完成。

以下步骤单独花费更多时间在整个过程中,不确定这个查询不好并且需要重新编写存储过程或其他一些服务器问题

IF (EXISTS (SELECT 1 
            FROM table1 PWI (NOLOCK)
            INNER JOIN table2 W (NOLOCK) ON PWI.ID = W.ID
            WHERE W.Flag = 1
              AND PWI.PatID IN (SELECT PatID FROM @table3)
              AND W.SubID IN (SELECT SubID FROM @table4)))

请帮助解决此问题

2 个答案:

答案 0 :(得分:0)

哈特在没有所有代码和DDL的情况下告诉,但这可能会提高性能

IF (EXISTS (SELECT 1 
FROM table1 PWI (NOLOCK)
INNER JOIN table2 W (NOLOCK) ON PWI.ID = W.ID
inner join @table3 on PWI.PatID = @table3.PatID
inner join @table4 on W.SubID = @table4.SubID
WHERE W.Flag = 1))

答案 1 :(得分:-2)

表变量获得估计行= ​​1并使用循环连接计划构建。使用临时表或OPTION(RECOMPILE)