高性能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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章