Qual è il costo in byte per l'overhead di una colonna sql_variant in SQL Server?
-
24-10-2019 - |
Domanda
Ho una tabella, che contiene molte colonne di tipo di dati float con precisione 15 cifre. Ogni colonna consuma 8 byte di archiviazione. La maggior parte del tempo i dati non richiede questa quantità di precisione e potrebbero essere immagazzinate come un vero e proprio tipo di dati. In molti casi, il valore può essere 0, nel qual caso potrebbe sfuggire a memorizzare un singolo byte.
Il mio obiettivo è quello di ottimizzare i requisiti di storage di spazio, che è un problema che sto affrontando a lavorare con un limite di dimensione del database SQL Express 4GB.
Se i tipi di dati byte, reali e galleggiante sono memorizzati in una colonna sql_variant è evidente una testa coinvolto nella memorizzazione di questi valori. Qual è il costo di questo sovraccarico?
sarebbe quindi necessario valutare se mi sarebbe effettivamente finire in un significativo risparmio di spazio (o meno) di commutazione di tipi di dati di colonna sql_variant.
Grazie, Elan
Soluzione 2
Ho trovato l'articolo folowing molto utile nel mettere in luce il costo di archiviazione per quanto sql_variant concerne:
Altri suggerimenti
Non sarà risparmiare spazio utilizzando sql_variant e sarà sufficiente introdurre un intero livello di complessità
Ogni colonna deve avere il tipo di dati corretto per memorizzare tutti i valori possibili in questo campo. Avete bisogno di galleggiare su tutta la linea? Potreste usare tinyint? etc etc
Se siete preoccupati per il limite di 4 GB quindi l'aggiornamento alle nuove versioni Express (10GB) o spostarsi verso l'alto un'edizione.