選擇數據類型
選擇正確的數據類型,對于提高性能至關重要。
下面給出幾種原則,有利于幫助你選擇何種類型。
1、更小通常更好。
使用最小的數據類型。——更少的磁盤空間,內存和CPU緩存。而且需要的CPU的周期也更少。
2、簡單就好。
整數代價小于字符。——因為字符集和排序規則使字符比較更復雜。
1>mysql內建類型(如timestamp,date)優于使用字符串保存。
2>使用整數保存ip地址。
3、盡量避免NULL——如果計劃對列進行索引,盡量避免把列設置為NULL
盡可能把字段定義為NOT NULL。——可以放置一個默認值,如‘',0,特殊字符串。
原因:
(1)MYSQL難以優化NULL列。NULL列會使索引,索引統計和值更加復雜。
(2)NULL列需要更多的存儲空間,還需要在MYSQL內部進行特殊處理。
(3)NULL列加索引,每條記錄都需要一個額外的字節,還導致MyISAM中固定大小的索引變成可變大小的索引。
決定列的數據類型,我們應該遵循下面兩步。
第一步、大致決定數據類型。——判斷是數字,字符串還是時間等。這通常很直觀。
第二步、確定特定的類型。
很多數據類型能夠保存同類型的數據,但是我們要發現,他們在存儲的范圍,精度和物理空間之間的差別(磁盤或內存空間)。如:datetime和timestamp能保存同樣類型的數據:日期和時間。——timestamp使用datetime一半的空間;能保存時區;擁有特殊的自動更新能力。