MySQL調優之數據類型

1.選擇優化的數據類型

幾個原則:更小的一般更好  簡單就好  儘可能避免NULL性能

選擇數據類型時,先選合適的大類型:數字,字符串,時間等。下一步選擇具體類型。優化

具體類型包括:設計

1.1 整數類型

若是存儲整數,可使用如下幾種數據類型:blog

TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT。分別使用8,16,24,32,64位存儲空間。可選UNSIGNED屬性。字符串

1.2 實數類型

若是存儲實數類型:FLOAT和DOUBLE支持使用標準浮點運算進行近似計算,而DECIMAL類型用於存儲精確的小數。效率

浮點類型在存儲一樣範圍的值時,一般比DECIMAL使用更少的空間。FLOAT使用4個字節存儲,而DOUBLE佔用8個字節。因爲開銷,除非要對小數進行精確計算,不然不要用DECIMAL。數據類型

 

1.3 字符串類型

VARCHAR二進制

VARCHAR用於存儲可變長字符串,比CHAR更節省空間。VARCHAR使用1或2個額外字節記錄字符串的長度。VARCHAR節省了存儲空間,因此對性能也有幫助。im

如下狀況適合用VARCHAR:數據

1.字符串列的最大長度比平均長度大不少;

2.列的更新不多;

3.UTF-8字符集,每一個字符用不一樣的字節數進行存儲

 

CHAR

CHAR類型是定長的:MySQL老是根據定義的字符串長度分配足夠的空間。

存CHAR值時,MySQL會刪除全部的末尾空格。  CHAR適合存儲很短的字符串,或者全部值都接近同一個長度。

 

BINARY和VARBINARY存儲的是二進制字符串。

 

 

 

BLOB和TEXT類型

爲存儲很大的數據而設計的字符串數據類型,分別採用二進制和字符方式存儲。

 

 

使用枚舉(ENUM)代替字符串類型

可讓表的大小縮小,並且當把列都轉換成ENUM之後,關聯變得很快。

 

1.4 日期和時間類型

DATETIME

TIMESTAMP

一般儘可能使用TIMESTAMP,由於它比DATETIME空間效率更高。

1.5 位數據類型

BIT

 

 

SET

 

 

在整數列上按位操做

 

1.6 選擇標識符

 

 整數類型

整數一般是標識列最好的選擇,由於它們很快而且可使用AUTO_INCREMENT。

ENUM和SET類型

避免

字符串類型

避免

 

 

2.MySQL schema 設計中的陷阱

太好的列

全能的枚舉

 

3.範式和反範式

相關文章
相關標籤/搜索