Вставка T-SQL в таблицу из хранимой процедуры SLOW - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть очень сложная хранимая процедура, которую мы используем для сбора и манипулирования данными о продажах.Он запускается (обычно) менее чем за секунду в SQL Server.

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

В данный момент я просто определяю свою табличную переменную @results и выполняю следующие действия:

@Results1 TABLE 
    (
        HeadId INT,
        AreaId INT,
        BranchId INT,
        SiteId INT,
        Description VARCHAR(50),
        EWC VARCHAR(8),
        S_Volume NUMERIC(10,6),
        S_Weight NUMERIC(10,6),
        S_Volume_Recycle NUMERIC(10,6),
        S_Weight_Recycle NUMERIC(10,6),
        M_Volume NUMERIC(10,6),
        M_Weight NUMERIC(10,6),
        M_Volume_Recycle NUMERIC(10,6),
        M_Weight_Recycle NUMERIC(10,6), 
        T_Volume NUMERIC(10,6),
        T_Weight NUMERIC(10,6),
        T_Volume_Recycle NUMERIC(10,6),
        T_Weight_Recycle NUMERIC(10,6)
    )

INSERT INTO @Results1
    EXECUTE [dbo].[usp_MasterDataExtractVolumes] 
         N'01/01/2018',
         N'01/01/2019',
         1604,
         NULL, NULL, NULL

SELECT * 
FROM @results1 

Хранимая процедура выполняется более 10 секунд (в 10 раз медленнее).

Я пытался использовать #results1, а также

INSERT INTO @Results1
    EXECUTE [dbo].[usp_MasterDataExtractVolumes] 
         N'01/01/2018',
         N'01/01/2019',
         1604,
         NULL, NULL, NULL

Я пытался использовать OPENQUERY без повышения производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...