我有很多数据需要插入,然后根据数据库中已有数据的历史记录进行处理。这需要一个初始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