前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【高性能MySQL】Schema与数据类型优化-实数类型

【高性能MySQL】Schema与数据类型优化-实数类型

原创
作者头像
用户9295575
修改2025-01-30 16:29:09
修改2025-01-30 16:29:09
970
举报

实数是带有小数部分的数字。MySQL既支持精确类型,也支持不精确类型。FLOAT和DOUBLE类型支持使用标准的浮点运算近似计算。DECIMAL类型用于存储精确的小数。因为CPU不支持对DECIMAL的直接计算。在MySQL5.0以及更高的版本中,MySQL服务器自身实现了DECIMAL的高精度计算。相对而言,CPU直接支持原生浮点计算,所以浮点运算明显更快。

MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个字节存9个数字)。DECIMAL(18,2)表示小数位数2位,整数位数16位,一共使用9个字节(每4个字节存储9个数字,小数点本身占一个字节)。

MySQL5.0和更高版本中的DECIMAL类型允许最多65个数字。而早期的MySQL版本中,DECAMAL只是一种存储格式,在计算中DECIMAL会转成DOUBLE类型。

浮点类型在存储值时,通常比DECIMAL使用更少的空间。FLOAT使用4个字节存储,DOUBLE使用8个字节存储,相比FLOAT有更高的精度和更大的范围。

因为需要额外的空间和计算开销。所以应尽量只在对小数进行精确计算时才使用DECIMAL,例如财务数据的存储。但在数据量比较大的情况下,可以考虑使用BIGINT代替DECIMAL,将需要存储的货币单位根据小数的位数乘以相应的倍数。这样可以避免浮点存储计算不精确和DECIMAL精确计算代价高的问题。

春节不间断,持续充电!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档