スパース列は4倍のスペースを使用しません 値を格納するために、(固定)4バイトの追加を使用します null以外の値ごと。 (すでに述べたように、NULLは0スペースを取ります。)
-
したがって、ビットに格納されたnull以外の値 列は1ビット+4バイト=4.125バイトになります。ただし、これらの99%がNULLの場合でも、正味の節約になります。
-
GUID(UniqueIdentifier)に格納されているnull以外の値 列は16バイト+4バイト=20バイトです。したがって、これらの50%のみがNULLである場合でも、それでも正味の節約になります。
したがって、「期待される節約」は、種類に大きく依存します。 私たちが話している列の、そしてどの比率がヌルと非ヌルになるかについてのあなたの見積もり。可変幅の列(varchars)は、おそらく正確に予測するのが少し難しいでしょう。
このBooksOnlineページには、何パーセントを示す表があります。 最終的にメリットを得るには、さまざまなデータ型のデータをnullにする必要があります。
したがって、いつ スパース列を使用する必要がありますか?行のかなりの割合がNULL値を持つと予想される場合。頭に浮かぶいくつかの例:
- A「注文返品日 「注文表の列。売上のごくわずかな割合で返品が発生することを期待します。
- 「4番目のアドレス 住所テーブルの「行。ほとんどの郵送先住所は、部門名と「ケアオブ」が必要な場合でも、おそらく4つの別々の行は必要ありません。
- A「サフィックス 顧客テーブルの「列。かなり低い割合の人が、名前の後に「Jr.」、「III」、または「Esquire」を付けています。