MySql表设计实战遵守的公式
字段长度
能使用int就不要使用varchar、char,能用varchar(16)就不要使用varchar(256)
长度够就好,正好就好
(虽然varchar16和varchar256存储hello所占空格键一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度,memory引擎也一样)
字段选择
固定长度的类型最好使用char,能使用tinyint就不要使用int
(char和varchar类型在存储和检索方面不同)
(存储问题,如果选择varchar存储,你存123或abc都可以,导致字段无一致性,使用固有类型可以判断有些值存不进去)
默认值
最好给每个字段一个默认值,最好不能为null,即not null default
int可以默认0,varchar可以默认空串
(null值会占用更多的字节,并且会在程序中造车很多与预期不符的情况)
适当索引
为每个表创建合理的索引,如唯一索引组合索引的场景以及普通索引的场景
唯一索引,除了主键还有格别字段,比如code建立唯一索引。当你添加一个相同的值会强校验
(选择合适索引,过多复杂索引不会提高性能反而会降低)
表中字段选择合适的数据类型
字段类型优先级:整型>datatime>enum>char>varchar>blob>text
优先考虑数字类型,其次是日期或者二进制类型,最后是字符串类型,同级别的数据类型,应该优点选择占用空间小的数据类型