更小的一般更好排序
簡單就好內存
儘可能避免null
字符串
1、整數類型數據
有兩種類型的數字 :整數和實數。若是存儲整數,可使用這幾種整數類型:TINYINT,SMALLINT,DEDIUMINT,INT,BIGINT.分別使用8,16,24,32,64位存儲空間。
磁盤
使用UNSIGNED屬性,表示不容許複製,這大體能夠例正數的上限提升一倍。字符
2、實數類型數字
實數是帶有小數部分的數字。然而,它們 不僅是爲了存儲小數部分;也可使用DECIMAL存儲比BIGINT還大的整數。MySQL既支持精確類型,也支持不精確類型。
DECIMAL類型用於存儲精確的小數。由於須要額外的空間和計算開銷,因此應該儘可能只在對小數進行精確計算時才使用DECIMAL--例如存儲財務數據。但在數量比較大的時候,能夠考慮使用BIGINT代替DECIMAL,將須要存儲的貨幣單位根據小數的位數乘以相應的倍數便可。假設要存儲財務數據精確到萬分之一分,則能夠反全部金額乘以一百萬,而後將結果存儲在BIGINT裏這樣能夠同時避免浮點計算不精確和DECIMAL精確計算代價高的問題。
3、字符串類型
VARCHAR和CHAR是兩種最主要的字符串類型。
VARCHAR類型用於存儲可變長字符串,若是MySQL表使用了ROW_FORMAT=FIXED建立的話,每一行都會使用定長存儲,這會很浪費空間。VARCHAR須要使用1或2個額外的字節記錄字條串的長度
CHAR類型是定長,CHAR適合存儲很短的字符串,或者全部值都接近同一個長度。好比MD5值,由於這是一個定長的值。
對於常常變動的數據,CHAR也比VARCHAR更好,由於定長的CHAR 類型不容易產生碎片。
---- 新加內容-----
慷慨是不明知的:
使用VARCHAR(5)和VARCHAR(200) 存儲'hello' 的空間開銷是一個樣的。那麼使用更短的列有什麼優點嗎?
事實證實有很大的優點。更長的列會消耗更多的內存,由於MySQL一般會分配固定大小的內存塊內部值。尤爲是使用內存臨時表進行排序或操做時會特別糟糕。在利用磁盤家庭糾紛哥進行排序時也一樣糟糕。
因此最好的策略是隻分配真正須要的空間。