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