数据库字段规范

1.优先选择符合存储需要的最小的数据类型:
(1)将字符串转化为数字类型存储:以Ip地址为例:255.255.255.255。
INET_ATON('255.255.255.255') = 4294967295
INET_NTOA(4294967295)='255.255.255.255'
节省更多存储空间。这样可以加载更多数据到缓存,提高命中率。
(2).对于非负型数据来说,优先使用无符号整形来存储。表中自增ID等。无符号相对于有符号多出一倍的存储空间。
(3)varchar(n)n代表的是字符数,而非字节数。
在mysql中使用utf-8编码的varchar(255)可以存储765个字节。
(4)字段长度会影响分配内存的大小。
(5)避免使用TEXT、blob数据类型
(6)建议把BLOB或是Text列分离到单独的扩展表中。
(7)TEXT或Blob类型只能使用前缀索引。并且TEXT不能有默认值。
(8)避免使用ENUM数据类型
ENUM数据类型本身是varchar类型但是使用整型来存储的。
修改ENUM值需要使用ALTER语句,修改表结构。修改表结构会对表加锁,可能导致数据库阻塞。
枚举类型本身是varchar类,进行order by操作的时候需要先将整形转化为varchar然后再进行排序。所以效率差,需要做额外的操作。
禁止使用数值为enum的枚举类。
(9)尽量把所有的列定义为非空not null。
可能为空的列,建立索引,需要额外的空间来保存列是否为空或非空状态值。占用更多的空间。
进行比较和计算的时候需要对Null值做特别的处理。造成索引失效。
(10)对于时间类型的数据列,定义为timestamp或者datetime。
timestamp范围:1970-01-01 00:01:01 ~ 2038-01-19 03:14:07
timestamp占用4个字节和INT相同,但比Int可读性高。
超出timestamp范围使用datetime。
(11)财务相关的数据强制使用decimal精准浮点型。
计算时不会丢失精度。
占用空间由定义的宽度决定。
每4个字节可以存储9位数字,并且小数点占用一个字节。
用于存储比Bigint更大的整数数据。比varchar类型存储更加高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值