我在 SQL Server 2005 中遇到以下问题:与使用临时表的相同插入相比,尝试将一些行插入表变量需要大量时间。
这是插入表变量的代码
DECLARE @Data TABLE(...)
INSERT INTO @DATA( ... )
SELECT ..
FROM ...
Run Code Online (Sandbox Code Playgroud)
这是插入临时表的代码
CREATE #Data TABLE(...)
INSERT INTO #DATA( ... )
SELECT ..
FROM ...
DROP TABLE #Data
Run Code Online (Sandbox Code Playgroud)
临时表没有任何键或索引,2次查询的select部分相同,select返回的结果数为~10000行。单独执行选择所需的时间约为 10 秒。
执行临时表版本最多需要 10 秒,我不得不在 5 分钟后停止表变量版本。
我必须使用表变量,因为查询是表值函数的一部分,不允许访问临时表。
表变量版本的执行计划
临时表版本的执行计划