Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Normalizzare un tavolo estremamente grande

Troverai altri vantaggi nella normalizzazione dei dati oltre alla velocità delle query in esecuzione su di essi... come le dimensioni e la manutenibilità, che da sole dovrebbero giustificare la normalizzazione...

Tuttavia, probabilmente migliorerà anche la velocità delle query; attualmente avere una singola riga contenente 300 colonne di testo è enorme e quasi sicuramente ha superato il 8.060 byte limite per la memorizzazione della pagina dei dati della riga ... e viene invece archiviato in ROW_OVERFLOW_DATA o LOB_DATA Unità di allocazione.

Riducendo le dimensioni di ogni riga tramite la normalizzazione, ad esempio sostituendo i dati di testo ridondanti con un TINYINT chiave esterna e rimuovendo anche le colonne che non dipendono dalla chiave primaria di questa tabella di grandi dimensioni in un'altra tabella, i dati non dovrebbero più traboccare e sarai anche in grado di archiviare più righe per pagina.

Per quanto riguarda l'overhead aggiunto eseguendo JOIN per ottenere i dati normalizzati... se indicizzi correttamente le tue tabelle, ciò non dovrebbe aggiungere una notevole quantità di sovraccarico. Tuttavia, se aggiunge un sovraccarico inaccettabile, puoi denormalizzare selettivamente i dati secondo necessità.