字段规范 本文为您介绍字段规范。 1. 字段类型越短越好(可以用int的则不能用bigint,能用tinyint的不能用int) 满足需求的情况下,字段类型越短,会占用更少的存储空间,更少的磁盘IO和网络IO,更少的MySQL计算空间和APP计算空间。常见的字段类型介绍如下: 2. 尽量不要使用default null,所有的字段尽可能都设定为not null并为其定义默认值: 索引不会包括NULL值。影响索引的统计信息,影响优化器的判断。 复合索引中只要有一列含有NULL值,则该列对于此复合索引将是无效的。 3. 需要多表 join的字段或直接比较的字段,数据类型保持绝对一致。 杜绝隐形转换,比如int同char进行比较,造成效率低下。 4. 当字段的类型为枚举型或布尔型时,建议使用tinyint类型。 5. 一般情况下不允许使用TEXT、BLOG,确实需要则拆分。 本质上说,不是MySQL不适合存储text,而是在太多的情况下我们期望MySQL能够更加高效的提供小数据查询/事务处理。 6. 同理,当varchar字段超过一定长度(256)时,建议拆分。 7. 内容明确,不做变更的类型代码可用枚举类型 8. 关于存储IP地址时字段类型的选择 如果是IPV4地址,存放使用int类型,而不是char(15)。Int只占4个字节,字符型占用16个字节,符合越短越好的原则。另外索引长度降低,检索效率更高。 如果是IPV6地址,请找DBA商量决定如何存储。 9. 关于存储时间字段类型的选择 对时间范围没有要求时,强烈建议采用TIMESTAMP取代DATETIME,因为TIMESTAMP更短(4个字节),而DATETIME占用8个字节 两者区别如下: 时间范围: datetime 以'YYYYMMDD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'10000101 00:00:00'到'99991231 23:59:59' TIMESTAMP值不能早于1970或晚于2037 存储方式: TIMESTAMP1.4个字节储存 2.值以UTC格式保存 3.时区转化,存储时对当前的时区进行转换,检索时再转换回当前的时区。datetime 1.8个字节储存 2.实际格式储存 3.与时区无关