列にNULLを格納しても、特にコストやスペースの節約にはなりません。固定長データの場合、スペース全体が引き続き予約されます。
一方、可変長データは、データの長さと実際の長さを格納するためのオーバーヘッドのみを必要とします。たとえば、VARCHAR(n)は2バイトのデータを使用して実際の長さを示すため、必要なストレージスペースは常にn+2です。
さらに、SET ANSI_PADDING ONの場合、NULL値を持つchar(n)はVARCHAR(n)として動作することに注意してください。
いずれにせよ、SQLServer2000またはSQLServer2005を使用する場合、NULLの格納によるスペースの「節約」は認識されません。SQLServer2008では、スパース列の概念が導入されており、主にNULLの列を節約できます。
>