MySQL数据类型优化原则


当前第2页 返回上一页

实数是带有小数部分的类型。MySQL中可以用decimal、float和double来存储实数类型。

float和double类型支持使用标准的浮点运算进行近似计算。
decimal类型用于存储精确的小数,在MySQL5.0以及更高的版本中,MySQL服务器自身实现了decimal的高精度计算。

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储,double使用8个字节存储,相比flaot有更高的精度和更大的范围。在浮点计算时,MySQL都使用的double作为内部浮点计算的类型。

在考虑对小数进行精确计算时,使用decimal(如财务数据),但在数据量大时,可以考虑使用bigint代替decimal,将需要存储但货币单位根据小数的位数乘以相同的倍数存储。这样可以避免decimal精确计算代价高的问题。

float和double使用的是cpu支持的原生浮点计算,所以快。
decimal是MySQL服务器自身实现的高精度计算。

字符串类型

varchar和char是两种最主要的字符串类型。

varchar

varchar类型用于存储可变长字符串,是最常见的字符串数据类型。它比定长类型更节省空间,因为它仅使用必要的空间。

varchar需要使用1个或2个额外字节记录字符串长度:如果列的最大长度小于或等于255字节,则只使用1个字节表示,否则使用2个字节。

varchar节省了存储空间,所以对性能也有帮助。但是,由于行是变长的,在update时可能使行变得比原来更长,这就导致需要做额外的工作。因为行占用的空间增长,并且在页内没有更多的空间可以存储。这种情况下,MyISAM会将行拆成不同的片段存储,InnoDB需要分裂页来使行可以放进页内。其他一些存储引擎也许不在原数据位置更新数据。

使用varchar最合适的场景是:在字符串列的最大长度比平均长度大很多;列更新很少(碎片不是问题);使用了像utf-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。

使用varchar(5)和varchar(200)存储‘hello'的空间开销是一样的,但是使用更长的列会消耗更多的内存,MySQL通常会分配固定大小的内存快来保存内部值。尤其是使用内存临时表进行排序或操作时会特别糟糕,在利用磁盘临时表进行排序同样糟糕。所以最好的策略是只分配真正需要的空间。

char

char类型是定长的。MySQL总是根据定义的字符串长度分配足够的空间。当存储char值时,MySQL会删除所有的末尾空格。char值会根据需要采用空格进行填充以方便比较。

char适合存储很短的字符串,或者所有值都接近同一个长度。例如密码的MD5值。对于经常变更的数据,char也比varchar更好,因为定长的char不容易产生碎片。对于非常短的列,char比varchar在存储空间上也更有效率,因为varchar需要额外字节记录长度。

以上就是MySQL数据类型优化原则的详细内容,更多关于MySQL数据类型优化的资料请关注其它相关文章!

更多相关Mysql内容来自木庄网络博客


标签:Mysql

返回前面的内容

相关阅读 >>

mysql中的limit用法有哪些(推荐)

mysql怎么查两个表的交集

mysql运维之二进制日志

mysql8.0.21.0社区版安装教程(图文详解)

mysql如何在已有的表设置自增字段

mysql中常用指令操作的介绍(代码示例)

mysql如何改变主键属性

mysql设置主键有什么用

mysql索引有哪些类型

mysql如何查询所有表和字段信息

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...