优先选择符合存储需要的最小的数据类型
将字符串转化为数字类型存储,例如将 ip 地址转为整数类型
VARCHAR(N) 中的 N 代表的是字符数(即可以存储 255 个汉字), 而不是字节数
使用 UTF8 存储汉字 Varchar(255)=765 个字节
过大的长度会消耗更多的内存
避免使用 TEXT、BLOB 数据类型
TinyText、Text、MidumText、LongText
建议把 BLOB 或是 TEXT 列分离到单独的扩展表中
TEXT 或 BLOB 类型只能使用前缀索引
避免使用 ENUM 数据类型
修改 ENUM 值需要使用 ALTER 语句
ENUM 类型的 ORDER BY 操作效率低, 需要额外操作
禁止使用数值作为 ENUM 的枚举值
尽可能把所有列定义为 NOT NULL
索引 NULL 列需要额外的空间来保存, 所以要占用更多的空间
进行比较和计算时要对 NULL 值做特别的处理
使用 TIMESTAMP 或 DATETIME 类型存储时间
TIMESTAMP1970-01-0100:00:01~2038-01-19 03:14:07
TIMESTAMP 占用 4 字节和 NT 相同, 但比 NT 可读性高
超出 TIMESTAMP 取值范围的使用 DATETIME 类型
同财务相关的金额类数据, 必须使用 decima 类型
1, 非精准浮点:float、double
2. 精准浮点:decimal
同财务相关的金额类数据, 必须使用 decimal 类型
Decima 类型为精准浮点数, 在计算时不会丢失精度
占用空间由定义的宽度决定
可用于存储比 bigint 更大的整数数据