SQL 2008中的Wide和Nonwide表有什么区别?

时间:2009-05-13 17:10:25

标签: sql-server sql-server-2008

我在MSDN上看这个页面:

Maximum Capacity Specifications for SQL Server 2008

它说:

每个“非全”表的最大列数:1,024
每个“宽”表的最大列数:30,000

但是我找不到有关SQL 2008中“宽”和“非宽”表之间差异的任何信息。如果我想定义一个“宽”表,我该怎么做?

4 个答案:

答案 0 :(得分:9)

Special Table Types

您需要的所有信息都在此MSDN文章中。

宽表只是一个包含稀疏列的表。要创建一个表格,只需在其定义中添加一个列集。

答案 1 :(得分:4)

我会说差异大约是28,976列。

答案 2 :(得分:4)

请务必注意,您的固定和可变长度数据总数仍限制为8019字节。只能在数据的MOST为空的稀疏表中支持能够做到这种疯狂的额外大量列。否则,您最终会得到超过8019字节的行,最终会出现不适合的rowdata,或溢出到扩展行数据(与普通数据页相比维护起来非常昂贵)。

Karen Delaney有一本非常好的书,它有很多内部功能和SQL Server限制,标题为SQL Server 2008 Internals。如果你真的进入了低级别的限制以及如何在SQL Server中完成工作,这是一个很棒的阅读。在某些情况下,它将增加您对SQL Server在字节级到磁盘下的功能的深入了解。

答案 3 :(得分:3)

另一个区别是宽表不适用于事务或合并复制。请参阅此处的“支持稀疏列的SQL Server技术”部分: http://msdn.microsoft.com/en-us/library/cc280604(v=sql.105).aspx