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

Quelle taille prend la valeur Null dans SQL Server

Si le champ a une largeur fixe, stocker NULL prend le même espace que toute autre valeur - la largeur du champ.

Si le champ est de largeur variable, la valeur NULL n'occupe aucun espace.

En plus de l'espace requis pour stocker une valeur nulle, il y a également une surcharge pour avoir une colonne nullable. Pour chaque ligne, un bit est utilisé par colonne nullable pour indiquer si la valeur de cette colonne est nulle ou non. Cela est vrai que la colonne soit de longueur fixe ou variable.

La raison des écarts que vous avez observés dans les informations provenant d'autres sources :

  • Le début du premier article est un peu trompeur. L'article ne parle pas du coût de stockage d'une valeur NULL, mais du coût d'avoir la capacité pour stocker un NULL (c'est-à-dire le coût de rendre une colonne nullable). Il est vrai que cela coûte quelque chose en espace de stockage pour rendre une colonne nullable, mais une fois que vous avez fait cela, il faut moins d'espace pour stocker un NULL qu'il n'en faut pour stocker une valeur (pour les colonnes à largeur variable).

  • Le deuxième lien semble être une question sur Microsoft Access. Je ne connais pas les détails de la façon dont Access stocke les NULL, mais je ne serais pas surpris si c'était différent de SQL Server.