本文基于 MySQL8.0,InnoDB引擎,如有错误欢迎指正。
字段类型
-
数字
- 尽量选择符合存储范围的前提下的小类型,知道每一种占用的字节数。
- 不存在负数需求情况下使用无符号
unsigned - ID用
int自增,一般选bigint没啥必要 tinyint可以用来存储 布尔、枚举、年龄等,布尔用0和1表示。- 不使用浮点数。金额的存储可以用
int扩大100倍的方式,或者用decimal(本质是字符串)
-
字符串
- 固定长度如手机号、身份证、hash值使用
char。 - 如博客内容,大段落文本使用
text。 - 其他使用
varchar。虽然磁盘占用按实际大小,但是字段应设置尽量小的长度限制。不需要16、64这种'整数',完全可以10、20。
- 固定长度如手机号、身份证、hash值使用
-
时间
- 日期时间,建议使用
datetime,不建议timestamp和int,原因见下文。 - 创建时间设置
NOT NULL DEFAULT CURRENT_TIMESTAMP,更新时间NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,自动维护。
- 日期时间,建议使用
2022年12月24日大约 13 分钟