与临时表相比,为什么声明表变量非常慢?

时间:2014-01-23 10:31:02

标签: sql sql-server sql-server-2014

我的后台流程是批量更新/插入数据。我需要在临时表中存储一些数据供以后使用。我有5个临时表。如果我使用临时表(CREATE TABLE #T),则需要2-3秒,但如果我使用表变量(DECLARE @T TABLE)则需要超过90秒。这是一个示例临时表,

CREATE TABLE #TempAttributes
(
    AID int
    ,PID int
    ,ATypeValue nvarchar(MAX)
    ,ATypeKey nvarchar(MAX)
    ,PLanguageID int
);

为什么表变量很慢?

1 个答案:

答案 0 :(得分:1)

我想这是因为表变量插入不支持并行计划。

并行查询处理是在MsSql中实现的并行查询中的优化过程,临时表从中受益,而表变量则不然。

这是我们不对大型数据集使用表变量的主要原因之一(当范围无关紧要时)。

查看here了解更多信息。