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