小编mun*_*sor的帖子

INSERT 临时表和表变量之间的性能差异

我在 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 分钟后停止表变量版本。

我必须使用表变量,因为查询是表值函数的一部分,不允许访问临时表。

表变量版本的执行计划 执行计划

临时表版本的执行计划 执行计划

performance sql-server-2005 temporary-tables

13
推荐指数
1
解决办法
9610
查看次数