MySQL 数据表优化设计(二):数值字段类型如何选择?

在MySQL 中有两种数值类型,整型和实数(即带有小数的数字)。整型可以通过 TINYINT、SMALLINT、MEDIUMINT、INT 或 BIGINT 表示,分别对应8bit、16bit、24bit、32bit 和64bit 的存储空间。实数可以通过 FLOAT、DOUBLE 和 DECIMAL 表示,其中 FLOAT 和 DOUBLE 即通常所说的浮点数,由于计算机二进制存储的精度问题,其计算得到的是近似的结果。

整型字段类型设计

整型可以选择是否是无符号数,这样可以禁止使用负数,并且可以将存储的最大值翻倍,例如 TINYINT UNSIGNED类型的字段可以存储的值的范围是0-255,而不是有符号的-128-127。使用无符号还是有符号取决与字段类型的范围,但是如果确定字段是无符号的,那么优先选择无符号类型,因为最大值翻倍可以在一定程度上避免使用更大存储空间的整型类型。

MySQL 允许我们指定整型的宽度,例如 INT(11)。这对于大部分应用并没有太大意义——实际上 MySQL 并不会限制合法值的范围,也就是即便指定为 INT(11),实际上只要数值类型的存储空间足够,也可以存储超过设定宽度的整型,例如 INT(12)的数字也可能可以存储到 INT(11)类型的字段中。对于存储和计算而言,INT(1)和 INT(20)是等效的。

如果确实要考虑性能,应该是根据业务真实的数值范围来确定使用整型字段类型,原则是只要字段类型不会超过业务系统的数值最大值,那么尽可能地选择低存储长度的整型类型。如果是无符号的数值,那就尽量使用无符号属性。例如,假设使用整型替代枚举的话,如果枚举数量不超过255个&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岛上码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值