在处理大数据时,是什么使 temp tables 比 table 变量更有效?

What is that makes temp tables more efficient than table variables when working with large data?

在 SQL 服务器中,在处理大数据(比如插入或更新 100000 行)(参考:SQL Server Temp Table vs Table Variable Performance Testing

我看过很多比较 temp table 和 table 变量的文章,但仍然不明白是什么让 temp tables 在处理大数据时更高效?仅仅是它们的设计行为方式还是其他什么?

Table variables 没有 statistics,因此 table 变量的基数估计为 1。

您可以使用 recompile 选项强制至少纠正 cardinality estimation,但您绝不能生成 column statistics,即 [= 不存在列值的数据分布 temporary tables.

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

另一个骗局是这个:

Queries that insert into (or otherwise modify) @table_variables cannot have a parallel plan, #temp_tables are not restricted in this manner.

您可以在这里阅读更多内容:

Parallelism with temp table but not table variable?

该主题的答案还有一个 link 补充阅读非常有帮助