在存储过程中插入SQL临时表非常慢

时间:2014-11-30 17:29:46

标签: stored-procedures sql-server-2008-r2

我在这一个程序中发现了一个可怕的瓶颈。不知道为什么这个小块代码在这里运行如此缓慢。如果我对这一块进行评论,整个过程大约需要7秒才能完成。这个街区增加了一分半钟。

这是#TempFC的定义:

CREATE TABLE #TempFC (
    NoticeID int, 
    AttyID int, 
    AFN9 varchar(9), 
    FirstPubDate smalldatetime, 
    MortgagorName varchar(255), 
    PropAddress varchar(255)
)

这是#NoticeIDs

的定义
CREATE TABLE #NoticeIDs (
    NoticeID INT, 
    CircuitCourtPubDateID INT, 
    CircuitCourtAdjournmentPublicationDate SMALLDATETIME
)

在运行时,#TempFC为空,#NoticeIDs中只有2行。一分钟和1/2将2条窄行插入空表。

INSERT INTO #TempFC (
    NoticeID, 
    AttyID, 
    AFN9, 
    FirstPubDate, 
    MortgagorName, 
    PropAddress
)   
SELECT              
    tN.NoticeID,
    tN.AttyID,
    tN.AttyFileNum9Chars as AFN9,
    tN.FirstPubDate,
    tN.MortgagorName,
    tN.PropAddress
FROM
    dbo.tblNotices tN
    INNER JOIN #NoticeIDs ON #NoticeIDs.NoticeID = tN.NoticeID
    INNER JOIN dbo.tblAttorneys tA ON tN.AttyID = tA.AttyID
    INNER JOIN dbo.tblParentAttorneys tPA on tA.ParentAttorneyID = tPA.ParentAttorneyID 
WHERE
    tPA.PubAffTiming = 2

如果我注释掉“INSERT”行并且只运行select(后面带有RETURN),则需要几秒钟来运行上面的所有代码然后选择。如果我注释掉SELECT并在INSERT语句中添加“VALUES”行,那么它也会运行得很快。

我还将上述所有内容放入一个单独的查询窗口中并按原样运行。它跑得很快,次秒。另外,我把它单独放在一个小的存储过程中,它也快速闪电。

我迷失了为什么这会在这里如此剧烈地减速。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试替换

CREATE TABLE #TempFC&插入#TempFC

使用SELECT ...进入#TempFC

并尝试更换' 2'与@x