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.