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.范式和反范式

相关文章
相关标签/搜索