数据库字段类型和长度的设置

数据库的类型比较多,常用的就是字符串和数字类型, 时间。在功能逻辑上,做枚举类型,bool类型等的时候,显然用不了int这么多数据,因此有很多人会用到smallint, tinyint,byte 等比较节约空间的类型,对于这种情况我认为是很好的。但是如果对这些类型标识的数据范围理解不够深刻,那就有可能导致数据值不足的隐患。所以对于数字类型,如果想偷懒,我觉得全部设置成int类型,也并不会浪费多少空间。但是对于字符串类型varchar,就需要比较慎重的设置长度,而不是不管什么数据都配置成varchar 255, varchar 1000…这种偷懒的形式。这种空间的浪费,肯定不是配置几个tinyint, byte 可以找补回来的。我们知道,数据库读数据的时候,都是按照页来读取的,每一行的数据越少,每一页可以容纳的数据行越多。读取越少的页,会减少IO,提高程序运行的速度,因为空间的有效使用还是很有必要的。像telephone, idcard, bankcard,uuid 这种明确知道数据长度的,只需要做适当的冗余即可,不能都是255或者1000。。。
我在实际项目中,经常看到一个数据库表,在配置int类型的时候,舍不得用int,而用varchar的时候,就一味地浪费。
再就是时间类型,datetime, timestamp, datetime(6) 所能表示的时间范围也大不一样。
在这里插入图片描述
因此,偷懒的话,就都配置成datetime即可,也不需要限制长度,如datetime(6). 这个情况我在实际项目里也遇到了,结果正好当时是一个end_date的字段,配置了一个100年的过期时间,导致溢出,插入的时候报错。

所以一定要清楚的认识到短数据类型的范围,可以适当的冗余,但不要无脑的浪费。数据库字段规范还是很重要的,否则五花八门的配置,后续的隐患很大。做数据迁移和扩展,或者做数据库类型切换的时候问题也会很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值