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

Come vengono archiviati i valori varchar in un database di SQL Server?

Restrizione completamente inutile per quanto posso vedere. Assumendo lo standard FixedVar format (al contrario dei formati usati con la compressione di riga/pagina o colonne sparse) e supponendo che tu stia parlando di varchar(1-8000) colonne

Tutti varchar i dati vengono archiviati alla fine della riga in una sezione di lunghezza variabile (o in pagine offrow se non possono rientrare nella riga). La quantità di spazio che consuma in quella sezione (e se finisce o meno fuori dalla riga) dipende interamente dalla lunghezza dei dati effettivi, non dalla dichiarazione della colonna.

SQL Server utilizzerà la lunghezza dichiarata nella dichiarazione della colonna durante l'allocazione della memoria (ad es. per sort operazioni). Il presupposto che fa in quel caso è che varchar le colonne verranno riempite fino a in media il 50% della loro dimensione dichiarata quindi questa potrebbe essere una cosa migliore da considerare quando si sceglie una taglia.