Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment les valeurs varchar sont-elles stockées dans une base de données SQL Server ?

Restriction complètement inutile à ce que je vois. En supposant la norme FixedVar format (par opposition aux formats utilisés avec la compression de ligne/page ou les colonnes clairsemées) et en supposant que vous parlez de varchar(1-8000) colonnes

Tous les varchar les données sont stockées à la fin de la ligne dans une section de longueur variable (ou dans des pages hors ligne si elles ne peuvent pas tenir dans la ligne). La quantité d'espace qu'il consomme dans cette section (et si elle finit ou non hors ligne) dépend entièrement de la longueur des données réelles et non de la déclaration de colonne.

SQL Server utilisera la longueur déclarée dans la déclaration de colonne lors de l'allocation de mémoire (par exemple pour sort opérations). L'hypothèse qu'il fait dans ce cas est que varchar les colonnes seront remplies pour 50 % de leur taille déclarée en moyenne donc cela pourrait être une meilleure chose à regarder lors du choix d'une taille.