

決定列的數據類型,我們應該遵循下面兩步。
第一步、大致決定數據類型。――判斷是數字,字符串還是時間等。這通常很直觀。
第二步、確定特定的類型。
很多數據類型能夠保存同類型的數據,但是我們要發現,他們在存儲的范圍,精度和物理空間之間的差別(磁盤或內存空間)。如:datetime和timestamp能保存同樣類型的數據:日期和時間。――timestamp使用datetime一半的空間;能保存時區;擁有特殊的自動更新能力。

2、unsigned屬性表示不允許負數,并大致把正上限提高了一倍。如TINYINT UNSIGNED保存的范圍為0到255而不是-127到128
3、MYSQL對整數類型定義寬度,比如int(1)和int(22)對于存儲和計算是一樣的。只規定了MYSQL的交互工具(如命令行客戶端)用來顯示字符的個數。


只分配真正需要的空間
使用varchar(5)和varchar(200)保存'hello'占用空間是一樣的。――這里應該指的是磁盤上的空間。
那么使用較短列有何優勢?――巨大的優勢
較大的列會使用更多的內存,因為MySQL通常會分配固定大小的內存塊(如varchar(200)會用200個字符大小的內存空間)來保存值(然后對值進行trim操作,最后放入磁盤)或取值。――這對排序或使用基于內存的臨時表尤其不好。


咱們再看看varchar






在對enum列使用order by的時候,是按數字排序的,而不是字符串排序。

日期和時間類型
TIMESTAMP:保存自1970年1月1日午夜(格林尼治標準時間)以來的秒數。――使用4字節存儲空間。
通常使用TIMESTAMP,它比DATETIME更節約空間。有時人們把Unix的時間戳保存為整數值,但是這通常沒有任何好處。――這種格式處理起來不太方便,我們并不推薦它。
新聞熱點
疑難解答