Sql server 在处理大数据时,是什么使临时表比表变量更有效?
在SQL Server中,与处理大数据(例如插入或更新100000行)时的表变量相比,临时表的性能要好得多(以时间为单位)(参考:)Sql server 在处理大数据时,是什么使临时表比表变量更有效?,sql-server,temp-tables,table-variable,Sql Server,Temp Tables,Table Variable,在SQL Server中,与处理大数据(例如插入或更新100000行)时的表变量相比,临时表的性能要好得多(以时间为单位)(参考:) 我看过很多文章比较了temp表和table变量,但仍然没有弄清楚在处理大数据时,究竟是什么让temp表更高效?这仅仅是它们的设计行为还是其他什么?表变量没有统计数据,所以表变量的基数估计为1 您可以使用重新编译选项强制至少更正基数估计,但无法生成列统计数据,即临时表不存在列值的数据分布 结果很明显:使用表变量的每个查询都将低估 另一个缺点是: 无法在@table_
我看过很多文章比较了temp表和table变量,但仍然没有弄清楚在处理大数据时,究竟是什么让temp表更高效?这仅仅是它们的设计行为还是其他什么?
表变量
没有统计数据,所以表变量的基数估计为1
您可以使用重新编译
选项强制至少更正基数估计
,但无法生成列统计数据
,即临时表
不存在列值的数据分布
结果很明显:使用表变量的每个查询都将低估
另一个缺点是:
无法在@table_变量中插入(或修改)查询
如果有一个并行计划,则临时表不受此限制
您可以在此处阅读更多信息:
该主题中的答案还有另一个指向附加阅读的链接,非常有用许多答案已经在那里了,。。。。。