MySQL数据类型选择

1 使用可以正确存储数据(不会超过范围)的最小的数据类型

2 整形优于字符串,使用MySQL内建的类型存储日期时间,而不是字符串。使用整形存ip。

3 避免NULL,NULL列建立索引,需要消耗更多的空间。但是Innodb存储引擎的稀疏索引NULL较多反而更高效,InnoDB 使用bit存储NULL,空间效率高

整数类型:

tinyint smallint mediumint int bigint

8         16         24             32  64

可选择unsigned属性

有符号无符号数占用的存储空间以及性能一样,仅存储范围不同。

为int(11)指定宽度为11 对存储与计算无影响,仅客户端展示数据会限制范围,不建议使用。

只有在需要对小数进行精确计算的情况下使用Decimal。如财务数据等

使用Decimal会带来空间及计算开销

可以用BigInteger取代。如精度保留小数点后2位。则每个数字乘以100后再存入BigInteger中

VarChar

存储可变长的字符串,仅使用必要的空间,因此比定长串Char更节省空间。

会使用额外的1个或2个字节记录字符串的长度

VarChar  适用于  字符串列最大长度比平均长度大很多,且修改不频繁的场景下(修改频繁会有碎片问题)

char适用于定长的值,变更频繁时char不会有碎片问题。

但char会有空格截断问题。

使用varchar时,仅分配真正需要的空间。

猜你喜欢

转载自blog.csdn.net/csdn_9527666/article/details/88622388