2009-05-13 11 views
10

stavo guardando questa pagina su MSDN:Qual è la differenza tra le tabelle Wide e Nonwide in SQL 2008?

Maximum Capacity Specifications for SQL Server 2008

E dice il seguente:

Max colonne per tabella 'nonwide': 1.024
Max colonne per tabella 'ampia': 30.000

Tuttavia non riesco a trovare alcuna informazione sulla differenza tra le tabelle "larghe" e "non larghe" in SQL 2008. Se volessi definire una tabella "ampia", come dovrei farlo?

+0

Quel limite massimo di colonna è 30k solo se si utilizza la colonna 'Colonna Set' nella tabella. Se non si utilizza la colonna 'column set' nella tabella, il numero massimo di colonne sparse + non sparse prese insieme nella tabella non può essere superiore a 1024. Maggiori dettagli [qui] (https: //www.simple- talk.com/sql/t-sql-programming/null-friendly-using-sparse-columns-and-column-sets-in-sql-server/) – RBT

risposta

7

Special Table Types

Tutte le informazioni che ti servono in questo articolo di MSDN.

Un tavolo largo è solo una tabella con colonne sparse. Per ampliare un tavolo devi semplicemente aggiungere una colonna alla sua definizione.

4

Direi che la differenza è di circa 28.976 colonne.

4

È importante notare che i dati di lunghezza totale fissa e variabile sono ancora limitati a 8019 byte totali. Essere in grado di fare questo pazzesco numero di colonne è supportato solo in tabelle sparse dove MOST dei dati è nullo. Altrimenti si finisce con le righe che superano gli 8019 byte e finiscono con i dati di riga che non si adattano o si estendono nei dati di righe estese (che è molto costoso da mantenere rispetto alle normali pagine di dati).

C'è un buon libro di Karen Delaney che ha un sacco di funzionalità e limiti interni per SQL Server dal titolo SQL Server 2008 Internals. Se sei veramente nei limiti di basso livello e come sono fatte le cose in SQL Server è una lettura fantastica. In alcuni casi aumenterà la profondità delle tue conoscenze su come SQL Server fa quello che fa sotto il cofano a livello di byte su disco.

+0

L'istruzione "limitata a 8019 byte totali" non è vera per SQL Server 2016, consultare [collegamento] https://technet.microsoft.com/en-us/library/ms186981 (v = sql.105) .aspx –

+0

Considerando che questo è stato scritto nel 2009, non vedo come qualcuno potrebbe pensare era rilevante per SQL 2016. :) –

3

Un'altra differenza è che le tabelle di larghezza non funzionano con la replica transazionale o di unione. Vedere la sezione "Tecnologie SQL Server che supportano colonne sparse" qui: http://msdn.microsoft.com/en-us/library/cc280604(v=sql.105).aspx

+0

Questo riferimento dice: "La replica transazionale supporta colonne sparse, ma non supporta i set di colonne", potresti chiarire la tua risposta e anche vedere la mia domanda senza risposta rilevante http: //dba.stackexchange. it/questions/59476/is-it-possible-to-replicate-wide-table-in-ms-sql? – alpav

+0

Per creare una tabella in una tabella ampia, è necessario creare colonne sparse e aggiungere anche un set di colonne. Se non crei un set di colonne, la tua tabella sarà comunque limitata a 1024 colonne. –

Problemi correlati