在处理大数据时,是什么使临时表比表变量更有效?

时间:2018-02-21 10:05:05

标签: sql-server temp-tables table-variable

在SQL Server中,与处理大数据(例如插入或更新100000行)时的表变量相比,临时表的性能(在时间上)要好得多(参考:SQL Server Temp Table vs Table Variable Performance Testing

我已经看过许多比较临时表和表变量的文章,但是在处理大数据时,还是不知道究竟是什么让临时表更有效?这只是他们的行为方式或其他方式吗?

1 个答案:

答案 0 :(得分:2)

Table variables没有statistics,因此表变量的基数估算为1.

您可以使用cardinality estimation选项强制至少更正recompile,但绝不能生成column statistics,即{{1}不存在列值的数据分布}}

后果很明显:使用temporary tables的每个查询都会低估

另一个骗局就是这个:

  

插入(或以其他方式修改)@table_variables的查询不能   有一个平行的计划,#temp_tables不受这种限制。

您可以在此处阅读更多内容:

Parallelism with temp table but not table variable?

该主题的答案还有一个额外的阅读链接,非常有帮助