2010-01-21 57 views
0

我在InnoDB中有一個很大的表,我想在合理範圍內儘量減少它的大小。對於一些列,這些值在每行中幾乎總是相同的,所以我想嘗試利用這一點。InnoDB沒有在磁盤上存儲什麼值?

舉例來說,如果我有一個int列(或datetimevarchar或其他),將在該列中的值null實際上並不存儲在磁盤上?也就是說,它是否會比每行存儲號碼1小?

或者在int not null default 0列中,0佔用的空間比1少,甚至根本沒有空間? (我知道我可以在一些大桌子上試試它,但是對於我的真實數據來說,嘗試的速度會很慢,並且測量數據庫中事物的大小可能會很挑剔,所以我想聽到有人說話有點知識!)

回答

0

每列的存儲取決於數據類型requirement

1作爲一個INT需要4個字節,但1作爲BIGINT需要8個字節。

如果性能不是問題,請檢查InnoDB的compression

0

int是一個int是一個int,所以0不會佔用比1更少的空間。而NULL只是一個特殊的值,它將在同一個空間中。

聽起來好像您在詢問稀疏列設置,其中NULLS由顯着小於數據類型的值表示,或根本不存儲。我找不到任何關於InnoDB的東西,但是在SQL Server 2008中有很多關於稀疏列的東西。

相關問題