2015-11-06 39 views
5

是否有任何限制来限制我们可以在表变量中拥有的记录数?如果是,那么表变量可以容纳的最大数量记录是多少?我必须编写一个存储过程来处理大约1000条记录。我是否需要使用表变量或临时表?表变量在SQL Server中可以具有的最大记录数

+0

[Table variable row limitation?]的可能重复(http://stackoverflow.com/questions/6945749/table-variable-row限制) – MusicLovingIndianGirl

+1

**请注意**:无论您在表变量中有多少行,查询优化器(缺少更好的信息)将始终假定表变量中只有** 1个单行**,如果您的表变量中有很多行,这可能会导致可怕的错误执行计划。谨慎使用它 - 如果你打算有成千上万的行,我宁愿使用临时表 –

+0

,但临时表的使用会导致在tempdb中增加负载。我也不能尝试cte,因为它需要在代码 – bmsqldev

回答

8

因为这样的官方MSDN网站Maximum Capacity Specifications for SQL Server没有为表变量定义此类上限,因为它取决于数据库大小和可用于存储的空闲内存。你也可以参考MSDN论坛上讨论的一样; Maximum Capicity of Table Variable

我是否需要使用表变量或临时表?

您可以使用它们中的任何一个,因为没有关于何时应使用Table变量以及何时使用临时变量的黄金法则。有一些参考这可以帮助理解它更多:

1

你的意思是一个表行?或者你想在一个T-SQL表中使用变量吗?我猜你必须是一个表类型的变量,然后答案是'不'。表格可容纳的限制应仅取决于磁盘的大小。如果您只想将特定数量的行放入表中,那么可以在填充表的查询中使用TOP关键字?如果你在问题中提供了更多的细节,你会得到更好的答案:-)

+0

多个地方引用我通常查询多个表中的数据,并将其放入表变量或临时表中,具体取决于查询过滤后的数据大小。有时候,我会混淆在表变量和临时表之间进行选择。 – bmsqldev

相关问题