2014-11-30 6 views
0

Я нашел ужасное узкое место в этой процедуре. Не знаю, почему этот маленький блок кода работает так медленно. Если я прокомментирую этот один блок, все это займет около 7 секунд, чтобы выполнить свою работу. Этот блок добавляет более полутора минут.очень медленная вставка в таблицу SQL temp в хранимой процедуре

Вот определение #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 пуст и есть только 2 строки в # NoticeIDs. Через минуту и ​​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 

Если я закомментировать строку «Вставить» и просто запустить выберите (с RETURN после него), она занимает всего несколько секунд, чтобы запустить весь код выше, а затем выберите. Если я закомментирую SELECT и добавлю строку «VALUES» в оператор INSERT, это тоже быстро сработает.

Я также разместил все это в отдельном окне запроса и запустил его как есть. он работал очень быстро, второй. Кроме того, я поместил его в одну небольшую хранимую процедуру сам по себе, и он тоже быстро стал молниеносным.

Я потерял, почему это так резко тормозится здесь. Есть идеи?

ответ

0

пытаются заменить

CREATE TABLE #TempFC & INSERT INTO #TempFC

с SELECT ... INTO #TempFC

, а также попытаться заменить '2' с @x

Смежные вопросы