在SQL Server中,与处理大数据(例如插入或更新100000行)时的表变量相比,临时表的性能(在时间上)要好得多(参考:SQL Server Temp Table vs Table Variable Performance Testing)
我已经看过许多比较临时表和表变量的文章,但是在处理大数据时,还是不知道究竟是什么让临时表更有效?这只是他们的行为方式或其他方式吗?
答案 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?
该主题的答案还有一个额外的阅读链接,非常有帮助