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