2009-05-13 15 views
10

yo estaba buscando en esta página en MSDN:¿Cuál es la diferencia entre las tablas Wide y Nonwide en SQL 2008?

Maximum Capacity Specifications for SQL Server 2008

y que dice lo siguiente:

Columnas Max por mesa 'nonwide': 1.024
Columnas Max por mesa 'amplia': 30,000

Sin embargo, no puedo encontrar ninguna información sobre la diferencia entre tablas "anchas" y "no extensas" en SQL 2008. Si quisiera definir una tabla "amplia", ¿cómo lo haría?

+0

El límite máximo de columna es 30k solo si está utilizando la columna 'Column Set' en su tabla. Si no está utilizando la columna 'conjunto de columnas' en su tabla, el recuento máximo de columnas dispersas + no dispersas tomadas juntas en su tabla no puede ser mayor que 1024. Más detalles [aquí] (https: //www.simple- talk.com/sql/t-sql-programming/null-friendly-using-sparse-columns-and-column-sets-in-sql-server/) – RBT

Respuesta

7

Special Table Types

Toda la información que necesitas está en este artículo de MSDN.

Una tabla ancha es solo una tabla con columnas dispersas. Para hacer una tabla amplia, solo agrega un conjunto de columnas a su definición.

4

Yo diría que la diferencia es de aproximadamente 28,976 columnas.

4

Es importante tener en cuenta que los datos totales de longitud fija y variable todavía están limitados a 8019 bytes en total. Ser capaz de hacer este loco gran número de columnas solo se admite en tablas dispersas donde la mayoría de los datos son nulos. De lo contrario, terminará con filas que superan los 8019 bytes y terminan con rowdata que no cabrán, o desbordamiento en datos de filas extendidas (que es muy costoso de mantener en comparación con las páginas de datos normales).

Hay un libro realmente bueno de Karen Delaney que tiene un montón de características internas y límites para SQL Server titulado SQL Server 2008 Internals. Si está realmente dentro de los límites de nivel bajo y cómo se hacen las cosas en SQL Server, es una lectura fantástica. Aumentará la profundidad de su conocimiento de cómo SQL Server hace lo que hace bajo el capó en el nivel de bytes al disco en algunos casos.

+0

La declaración "limitada a 8019 bytes en total" no es verdadera para SQL Servidor 2016, ver [enlace] https://technet.microsoft.com/en-us/library/ms186981 (v = sql.105) .aspx –

+0

Teniendo en cuenta que esto fue escrito en 2009, no veo cómo alguien podría pensar fue relevante para SQL 2016. :) –

3

Otra diferencia es que las tablas anchas no funcionan con la duplicación transaccional o de fusión. Consulte la sección "SQL Server Technologies that Support Sparse Columns" aquí: http://msdn.microsoft.com/en-us/library/cc280604(v=sql.105).aspx

+0

Esta referencia dice: "La replicación transaccional admite columnas dispersas, pero no admite conjuntos de columnas", podría aclarar su respuesta y también ver mi pregunta relevante sin respuesta http: //dba.stackexchange. com/questions/59476/is-it-possible-to-replicate-wide-table-in-ms-sql? – alpav

+0

Para convertir una tabla en una tabla ancha, debe crear columnas dispersas y también agregar un conjunto de columnas. Si no crea un conjunto de columnas, su tabla seguirá estando limitada a 1024 columnas. –

Cuestiones relacionadas