高性能mysql(三)選擇優化的數據類型

mysql支持的數據類型非常多,所以選擇相應的數據類型對於獲得高性能至關重要。

幾個原則

a.更小通常更好。(因爲佔用更少的磁盤內存cpu)
b.簡單更好(int比字符串更好)
c.避免null(null會佔用更多的空間,也會使得索引複雜)

類型

a.整數類型

TINYINT 8位
SMALLINT 16位
MEDIUMINT 24位
INT 32位
BIGINT 64位

他們的範圍是 -2(N-1)次方到2(N-1)次方。
INT(11)和INT(1)的範圍是一樣的

b.字符串

varchar變長 通常情況下會更節省空間,但是會有一到2個位置來存放字符的長度。在更新的時候會比較麻煩。

char適合存儲固定長度的字符。

慷慨是不明智的能用varchar(3)的就不要用varchar(10)
在utf-8狀態下的varchar,最大中文只能到 : 65535 - (4 + 4 + 2 + 1 + 5) - 2 = 65535 - 16 - 2 = 65517字節。

c.BLOB和TEXT

VARCHAR,BLOB 和TEXT類型是變長類型,對於其存儲需求取決於列值的實際長度(在前面的表格中用L表示),而不是取決於類型的最大可能尺寸。例如,一個 VARCHAR(10)列能保存最大長度爲10個字符的一個字符串,實際的存儲需要是字符串的長度 ,加上1個字節以記錄字符串的長度。對於字符串'abcd',L是4而存儲要求是5個字節。
BLOB和TEXT類型需要1,2,3或4個字節來記錄列值的長度,這取決於類型的最大可能長度。VARCHAR需要定義大小,有255的最大限制;TEXT則不需要。如果你把一個超過列類型最大長度的值賦給一個BLOB或TEXT列,值被截斷以適合它。

CHAR(n) 固定長度,最多 255 個字符 
VARCHAR(n) 可變長度,MySQL 4.1 及以前最大 255 字符,MySQL 5 之後最大 65535 字節 
TINYTEXT 可變長度,最多 255 個字符 
TEXT 可變長度,最多 65535 個字符 
MEDIUMTEXT 可變長度,最多 16777215(2^24 - 1)個字符 
LONGTEXT 可變長度,最多 4294967295(2^32 - 1)(4G)個字符
發佈了105 篇原創文章 · 獲贊 30 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章