SQL Server中表变量可以拥有的最大记录数是多少?

7

在表变量中,有没有任何限制来限制我们可以拥有的记录数量?如果有,一个表变量最多可以容纳多少记录?我需要编写一个存储过程来处理大约1000条记录。我应该使用表变量还是临时表?


可能是表变量行限制?的重复问题。 - MusicLovingIndianGirl
3
请注意:无论您在表变量中有多少行,查询优化器(缺乏更好的信息)总是会假定您的表变量只有1行,如果您的表变量有大量行,则可能导致非常糟糕的执行计划。请谨慎使用 - 如果您打算有数千行,最好使用临时表。 - marc_s
但是,使用临时表会导致在tempdb中增加负载。我也不能尝试使用CTE,因为它需要在代码中被多次引用。 - bmsqldev
2个回答

12
因此,在官方 MSDN 网站中,SQL Server 的最大容量规格并未为表变量定义上限,因为这取决于数据库大小和可用于存储的空闲内存。您还可以参考讨论相同话题的 MSDN 论坛:表变量的最大容量

我应该使用表变量还是临时表?

可以根据需要使用任何一种,没有通用的规则说明何时应该使用表变量或临时表。有一些参考资料可以帮助更好地理解:


1
你是指表格行吗?还是想要一个在某个T-SQL中作为表格的变量?我猜你一定是想要一个类型为table的变量,答案是否定的。表格可以容纳的限制应该只取决于您硬盘的大小。如果您只想将一定数量的行放入表格中,那么可以在填充表格的查询上使用TOP关键字。如果您在问题中提供更多细节,您将得到更好的答案 :-)

我通常从多个表中查询数据,并根据查询过滤后的数据大小将其放入表变量或临时表中。有时,我会困惑在表变量和临时表之间做出选择。 - bmsqldev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接