Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在处理大数据时,是什么使临时表比表变量更有效?_Sql Server_Temp Tables_Table Variable - Fatal编程技术网

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

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

在SQL Server中,与处理大数据(例如插入或更新100000行)时的表变量相比,临时表的性能要好得多(以时间为单位)(参考:)


我看过很多文章比较了temp表和table变量,但仍然没有弄清楚在处理大数据时,究竟是什么让temp表更高效?这仅仅是它们的设计行为还是其他什么?

表变量
没有统计数据,所以表变量的基数估计为1

您可以使用
重新编译
选项强制至少更正
基数估计
,但无法生成
列统计数据
,即
临时表
不存在列值的数据分布

结果很明显:使用
表变量的每个查询都将低估

另一个缺点是:

无法在@table_变量中插入(或修改)查询 如果有一个并行计划,则临时表不受此限制

您可以在此处阅读更多信息:


该主题中的答案还有另一个指向附加阅读的链接,非常有用

许多答案已经在那里了,。。。。。