T-SQL从存储过程SLOW插入表中

时间:2018-12-14 19:27:19

标签: sql sql-server performance

我有一个非常复杂的存储过程,可用来捕获和处理销售数据。它在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并没有性能优势。

0 个答案:

没有答案