J'ai une grande table avec disons 10 colonnes. 4 d'entre eux restent nuls la plupart du temps. J'ai une requête qui fait que la valeur nulle prend n'importe quelle taille ou aucune taille en octets. J'ai lu quelques articles que certains d'entre eux disent:
http://www.sql-server-citation.com/2009/12/common-mistakes-in-sql-server-part-4.html
Il y a une idée fausse que si nous avons les valeurs NULL dans une table, cela n'occupe pas d'espace de stockage. Le fait est qu'une valeur NULL occupe de l'espace - 2 octets
SQL: utilisation des valeurs NULL par rapport aux valeurs par défaut
Une
NULL
valeur dans les bases de données est une valeur système qui occupe un octet de stockage et indique qu'une valeur n'est pas présente par opposition à un espace ou zéro ou toute autre valeur par défaut.
Pouvez-vous s'il vous plaît me guider concernant la taille prise par valeur nulle.
la source
byte
(généralement 8 bits). Donc en réalité, unbit
prend unbyte
. Excellente réponse Mark: +1.Les revendications de liaison suivant que si la colonne est de longueur variable, à savoir
varchar
puisNULL
prend 0 octets (plus 1 octet est utilisé pour signaler si la valeur estNULL
ou non):Le lien ci-dessus, ainsi que le lien ci-dessous, affirment que pour les colonnes de longueur fixe, c'est-à-dire
char(10)
ouint
, une valeur deNULL
occupe la longueur de la colonne (plus 1 octet pour indiquer si c'estNULL
ou non):Exemples:
char(10)
surNULL
, il occupe 10 octets (remis à zéro)int
prend 4 octets (également remis à zéro).varchar(1 million)
ensemble àNULL
prend 0 octets (+ 2 octets)Remarque: sur une légère tangente, la taille de stockage de
varchar
est la longueur des données saisies + 2 octets.la source
À partir de ce lien :
la source
Le stockage d'une valeur NULL ne prend pas d'espace.
C'est une idée fausse - c'est 2 octets par ligne , et je suis à peu près sûr que toutes les lignes utilisent ces 2 octets, qu'il y ait ou non des colonnes Nullable.
Il s'agit de bases de données en général, pas spécifiquement de SQL Server. SQL Server n'utilise pas 1 octet pour stocker les valeurs NULL.
la source