我有一个表变量:
DECLARE @to_process TABLE
(
[Id] [bigint] NOT NULL,
[SequenceId] [bigint] NOT NULL,
...
)
INSERT INTO @to_process
( Id
, SequenceId
...
)
SELECT
TOP (@recordsToProcess)
Id
, SequenceId
...
在我的存储过程中。我调查过,插入其中大约花费了总执行时间的 66%。
我如何改进或优化我的代码以加速我的 sp 执行?
添加:
首先想到...
如果您有足够的数据来处理如此多的批次,请使用#temptable。
后面使用表变量时,总是假定只有一行:没有关于这个表变量的统计信息。因此,如果您有几千个,则后续计划将不是最优的。
临时表有统计信息(如果需要还有索引等)并且可以更好地处理更大的数据集