1
3
Should I use a #temp table or a @table variable?
|
2
1
请参阅: 通常说,@table变量保存在内存中,而不是tempdb; 这不一定是正确的。 表变量没有统计信息,这可能会影响某些情况下的性能。 |
3
1
当处理相对较小的数据集时,表变量都很好,但是要注意它们不能很好地伸缩。特别是,在SQL Server 2000和SQL Server 2005之间的行为变化导致性能下降,数据集很大。 在SQL Server 2000上有一个非常复杂的存储过程,这对我来说是一个特别讨厌的错误。研究和测试表明,使用表变量是更有效的方法。但是,在升级到SQL Server 2008之后,性能下降 相当地 .使用表变量作为罪魁祸首花了一段时间,因为之前所有的测试等都排除了温度表更快的可能性。但是,由于SQL Server版本之间的这种变化,现在正好相反,经过一次重大的重构之后,需要花费两位数的时间才能完成的工作在几分钟内就开始完成了! 所以要知道,对于哪一个最好,没有明确的答案——你需要评估你的情况,进行你自己的测试,并根据你的发现做出决定。并始终在服务器升级后重新评估。 阅读本文了解更多详细信息和示例计时- http://www.sql-server-performance.com/articles/per/temp_tables_vs_variables_p1.aspx 更新: 另外,请注意还有第三种类型的临时表-xyz。这些是全局的,对所有SQL Server连接都可见,并且不象常规临时表那样限定到当前连接的范围。只有当访问它的最终连接关闭时,才会删除它们。 |
4
0
myTable是一个临时表,它有利于约束和索引等,并使用更多的资源。 @MyTable是一个表变量,您将其定义为具有一个或多个列。它们使用较少的资源,并且其范围与您在其中使用它们的过程相同。 在大多数情况下,如果使用临时表,则可以使用表变量,这可能会带来性能优势。 |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
SoT · SQL Server中求和函数的工作方式 2 年前 |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |