一、選擇原則
1.應該盡量使用可以正確存儲數據的最小字段類型
2.選用簡單的數據類型,例如:一個是盡量用mysql內置的字段類型來存儲日期和時間;另一個存儲IP地址盡量用整型;能用整型的盡量不用字符串類型
3.盡量避免使用NULL,例如:打算創建索引的字段,不要設置為NULL
二、常用的字段類型的選擇說明
1.日期和時間類型
TIMESTAMP與DATETIME都可以存儲相同類型的數據,並且精確到秒,可是TIMESTAMP只使用DATETIME一半的存儲空間,並且它可以根據時區變化,具有特殊的自動更新能力。
存儲空間:TIMESTAMP占用4個字節,DATETIME占用8個字節
mysql> select current_timestamp; +---------------------+ | current_timestamp | +---------------------+ | 2018-07-21 15:56:39 | +---------------------+ 1 row in set (0.00 sec)
這兩個類型存儲的數據格式類似:2018-07-21 15:56:39
將這個值轉換成時間戳
mysql> select unix_timestamp('2018-07-21 15:56:39'); +---------------------------------------+ | unix_timestamp('2018-07-21 15:56:39') | +---------------------------------------+ | 1532159799 | +---------------------------------------+ 1 row in set (0.00 sec)
將時間戳轉換成標准時間
mysql> select from_unixtime('1532159799'); +-----------------------------+ | from_unixtime('1532159799') | +-----------------------------+ | 2018-07-21 15:56:39.000000 | +-----------------------------+ 1 row in set (0.00 sec)
2.整數類型
tinyint(8bit), smallint(16bit), mediumint(24bit), int(32bit), bigint(64bit)
整數計算一般使用64位的bigint整數,一個細節需要注意的地方,INT(1)與INT(20)對於存儲和計算來說寬度是相同的,對於INT型字段來說指定寬度是多余的
3.實數類型
浮點類型(float, double)與decimal類型在性能上,浮點類型更好一些,同樣范圍的值,浮點類型比decimal占用更少的空間
