Wenn das Feld eine feste Breite hat, nimmt das Speichern von NULL denselben Platz ein wie jeder andere Wert – die Breite des Felds.
Wenn das Feld eine variable Breite hat, nimmt der NULL-Wert keinen Platz ein.
Zusätzlich zum Speicherplatz, der zum Speichern eines Nullwerts erforderlich ist, gibt es auch einen Overhead für eine Nullable-Spalte. Für jede Zeile wird ein Bit pro Nullable-Spalte verwendet, um zu markieren, ob der Wert für diese Spalte null ist oder nicht. Dies gilt unabhängig davon, ob die Spalte eine feste oder eine variable Länge hat.
Der Grund für die Abweichungen, die Sie in Informationen aus anderen Quellen festgestellt haben:
-
Der Anfang des ersten Artikels ist etwas irreführend. Der Artikel spricht nicht über die Kosten für das Speichern eines NULL-Werts, sondern über die Kosten für die Fähigkeit um eine NULL zu speichern (d. h. die Kosten, um eine Spalte nullfähig zu machen). Es stimmt, dass es etwas Speicherplatz kostet, um eine Spalte nullfähig zu machen, aber sobald Sie das getan haben, braucht es weniger Platz, um eine NULL zu speichern, als um einen Wert zu speichern (für Spalten mit variabler Breite).
-
Der zweite Link scheint eine Frage zu Microsoft Access zu sein. Ich weiß nicht, wie Access NULL-Werte speichert, aber ich wäre nicht überrascht, wenn es sich von SQL Server unterscheidet.