MySQL调优之数据类型

1.选择优化的数据类型

几个原则:更小的通常更好  简单就好  尽量避免NULL

选择数据类型时,先选合适的大类型:数字,字符串,时间等。下一步选择具体类型。

具体类型包括:

1.1 整数类型

如果存储整数,可以使用以下几种数据类型:

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节省了存储空间,所以对性能也有帮助。

以下情况适合用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.范式和反范式

 

posted @ 2019-09-01 18:07  EarsonLau  阅读(153)  评论(0编辑  收藏  举报