SQL Serverのビット列は実際に1バイト分のスペースを使用しますか?


20

私はSSMSをいじくり回し、INT列の「サイズ」が4バイト(予想)であることに気付きましたが、列が1バイトBIT全体であることに少しショックを受けました。

私が見ているものを誤解しましたか?


1
BITカラムがワード境界ではなくバイト境界に配置されているのは幸運だと思います。
マイクシェリル 'キャットリコール'

回答:



14

はい。

bitテーブルに列が1つしかない場合、ストレージはaを使用しますが、同じバイトにbyte最大8 bit列を格納できるため、次の7列はその点で「空き」です。

また、列ストレージごとに1ビット必要ですNULL_BITMAP(再び次のバイトに切り上げられます)。データページには、bit許可するかどうかに関係なく、すべての列が含まれますNULL(メタデータが行がまだ更新されていない場合にのみ変更されるため、後で追加できるヌル可能な列を除くALTER TABLE


9

BIT行ごとに1バイトを使用しますが、BITその1バイトストレージに最大8つのフィールドをパックできます。

したがって、最初のフィールドのコストは1バイトですが、次の7フィールドは無料です!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.