共有ホスティング上にMSSQLServer 2008データベースがあり、使用されるストレージスペースを可能な限り減らす必要があります。私の最大のテーブルには次の定義があります。
CREATE TABLE [stage](
[station_id] [smallint] NOT NULL,
[time_utc] [smalldatetime] NOT NULL,
[stage_mm] [smallint] NOT NULL,
CONSTRAINT [PK_stage] PRIMARY KEY CLUSTERED ([station_id] ASC,[time_utc] ASC)
テーブル内のレコードあたりの平均バイト数を調べようとしました。理論によれば、サイズは次のようになります。4B(行ヘッダー)+ 2B(smallint)+ 4B(smalldatetime)+ 2B(smallint)これは12バイトです。
ただし、コマンドを実行すると、次のようになります。
dbcc showcontig ('stage') with tableresults
これは次のように表示されます。MinimumRecordSize=15、MaximumRecordSize = 15したがって、SQL Serverによると、レコードあたりのバイト数は12ではなく15です。テーブルが占める合計ディスク容量を見て、それを除算すると、レコードあたりの15バイト数も正しいようです。行の数。
余分な3バイトを占めているのは何ですか?