结合阿里的mysql规范
- 必须定义主键, 默认为Id,整型自增(禁止使用varchar类型的主键)
- 禁止使用外键
- 单表超500w或数据量超过10G考虑分表
- 单条记录禁止超过8K,计算公式:中文列*3(utf8)+英文列*1
- 索引列必须定义为not null,并设计default值
- 浮点型用decimal
- 禁止存储blob,text类型的大文本,文件,图片,使用fastdfs之类的
- 禁止使用:存储过程、触发器、函数、视图、事件等MySQL高级功能
- 禁止使用子查询,建议将子查询转换成关联查询
什么时候用char
定长的char类型不容易产生碎片,适合md5,Y/N这种。
例如用CHAR(1)来存储只有Y和N的值,只需要一个字节,但是VARCHAR(1)却需要两个字节,因为还有一个记录长度的额外字节
注意:tinyint比char(1)效率更高
占用字节 | 有符号范围 | 无符号范围 | |
tinyint | 1 | -128~127 | 0~255 |
smallint | 2 | -32768~32767 | 0~65535 |
int | 4 | -21亿~21亿 | 0~42亿 |
bigint | 8 |
参考: https://www.jianshu.com/p/6f4c6141b275
来源:oschina
链接:https://my.oschina.net/cectsky/blog/4321610