フィールドが固定幅の場合、NULLを格納すると、他の値と同じスペース(フィールドの幅)が必要になります。
フィールドが可変幅の場合、NULL値はスペースを取りません。
null値を格納するために必要なスペースに加えて、null許容列を持つためのオーバーヘッドもあります。各行について、null許容列ごとに1ビットを使用して、その列の値がnullかどうかをマークします。これは、列が固定長であろうと可変長であろうと当てはまります。
他の情報源からの情報で観察された不一致の理由:
-
最初の記事の冒頭は少し誤解を招くものです。この記事では、NULL値を格納するためのコストについてではなく、能力を持つためのコストについて説明しています。 NULLを格納します(つまり、列をNULL可能にするためのコスト)。列をNULL可能にするためにストレージスペースにいくらかコストがかかるのは事実ですが、一度それを行うと、値を格納するよりもNULLを格納するためのスペースが少なくて済みます(可変幅列の場合)。
-
2番目のリンクは、MicrosoftAccessに関する質問のようです。 AccessがNULLを格納する方法の詳細はわかりませんが、SQLServerと異なっていても驚かないでしょう。