Schema(范式与反范式)与数据类型优化

选择正确数据类型的依据:
1、更小的通常更好,因为它们占用更少的磁盘、内存和CPU缓存。
2、简单的数据类型
2、避免使用null,通常情况下最好指定列为NOT NULL,除非真的需要存储NULL值。可为NULL的列使得索引、索引统计和值比较都更为复杂。

整数类型

TINYINT、SMATLLINT\MEDIUMINT、INT、BIGINT分别使用8、16、24、32、64位存储空间。MYSQL可以为整数类型指定宽度,但是对大多数应用没有意义,它只是规定了某些数据库交互工具显示的字符个数,在存储和计算中它们和不加列宽是一样的效果。

实数类型

DECIMAL、FLOAT、DOUBLE。在数据量比较大的时候,将小数乘以指定倍数,并使用BIGINT存储,这样可以避免浮点存储计算不准确和DECIMAL精确计算代价高的问题。

字符串类型

VARCHAR(10)为变长字符串,最大长度为10,需要11个存储空间,10个做字符存储空间用,1个做记录长度用。如果最大长度大于255则需要用两个字节记录长度,如VARCHAR(1000)的列则需要1002个字节。VARCHAR在update时面临空间需要增长的问题,这需要额外的工作。下面的情况使用VARCHAR是合适的:字符串列最大长度比平均长度大很多;列的更新很少,所以碎片不是问题;使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。
CHAR适合存储很短的字符串,或者所有值都接近同一个长度。例如,CHAR非常适合存储密码的MD5值。对于经常变更的数据,CHAR也比VARCHAR更好,因为定长不容易产生碎片。CHAR比VARCHAR少一些记录长度的字节。当存储CHAR的时候,MYSQL服务器会

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值