MySQL调优-02数据类型优化
基本原则
更小更简单,避免NULL。
MySQL数据类型
整形
- tinyint: 8位1字节。
- smallint: 16位2字节。
- mediumint: 24位3字节。
- int: 32位4字节和Integer一样。
- bigint: 64位8字节。
注意:长度和存储空间没关系。
无符号:可选择无符号不存储负数,同样空间可以多存一倍数据。
实数
- float: 4字节。
- double: 8字节。
- decimal: 精准类型,本质存储的时字符串,65个cpu不支持计算的,效率慢。
字符串
- char: 定长,更胜空间
- varchar: 不定长,需要1-2个字节记录字符串长度
- blob/text: 使用时一般单独一张表存储,它俩存的是内存地址,实际存储在外部区域。
- enum
- set
char和varchar的选择:如果定长比如md5、hash值定长的选择char,如果存储的最大长度远大于平均长度使用varchar
时间类型
MySQL时间类型的存储只存储到秒,如果需要更精确的存储建议使用bigint.
- datetime:支持1001年-9999年,无时区限制。
- timestamp:仅支持1970年-2038年,有时区限制。