0

我有很多数据需要插入,然后根据数据库中已有数据的历史记录进行处理。这需要一个初始INSERT INTO ... VALUES命令,然后是一系列查询、计算和后续INSERT INTO ... SELECT FROM附加查询。

我工作的实际处理部分是一个通用的存储过程,但是我用唯一的初始值将它INSERT INTO ... VALUES包装为一个打包的存储过程。

当我运行一天的存储过程时,大约需要 6 分钟。当我尝试在同一个 SSMS 执行中运行多天的存储过程时,似乎比每次调用的 6 分钟要长得多。如果我在一段时间后停止存储过程,它似乎实际上已经完成了所有事情,但由于某种原因最后被挂断了。

我所描述的是否有任何危险信号表明我可能做某事效率低下?我发现将打包的存储过程包装在一个BEGIN ... END子句中会有所帮助,但并非总是如此。

示例代码:

--STEP 3 DailyDataProcess

-summary query
-calculation query to join to summary query
-select into temp tables
-insert into select query
-more summary and calculation queries
-final insert into select query
-update yesterday's data where a certain event occured

--STEP 2 PackagedSP1

INSERT INTO InitialTable (col 1, col 2, todaysdate) 
VALUES (1, 2, 8/14/2017) 

EXECUTE DailyDataProcess

--STEP 1 MultiCall

BEGIN EXECUTE PackagedSP1 END
BEGIN EXECUTE PackagedSP2 END
BEGIN EXECUTE PackagedSP3 END
BEGIN EXECUTE PackagedSP4 END
4

0 回答 0