选择优化的数据类型 (二)整数与实数

一。整数

TINYINT,SMALLINT,MEDIOINT,INT,BIGINT

存储空间分别为:8,16,24,32,64

范围:-2^(n-1) 到2^(n-1)-1

Unsigned 属性不允许负数,范围:0-2^(n-1)-1

signed与Unsigned类型占用的存储空间是一样的,性能也一样,因此可以根据实际的情况选择合适的类型。

你的选择将会决定mysql把数据放在内存中还是磁盘上。然而,整数运算通常使用64位BIGINT整数,即使是32位架构也是如此。(一些聚合函数是例外,它们使用DECIMAL或DOUBLE来计算)

mysql还可以对整数类型定义宽度,比如int(11).这对于大多数应用程序都是没有意义的,它不会限制值的范围,只规定了mysql的交互工具(例如命令行客户端)来显示字符的个数。对于存储和计算,int(1)和int(20)是一样的.

二。实数

FLOAT占用4个字节,DOUBLE占用8个字节,mysql在内部对浮点类型使用double进行计算。

比起DECIMAL类型,浮点类型保存同样大小的的值使用的空间通常更少,

mysql5.0及以上版本中的DECIMAL类型最多允许65个数字,服务器自身进行了DECIMAL运算,因为CPU并不支持对它进行直接计算,浮点运算会快一点,因为计算直接在CPU上进行。DECIMAL把数字保存到一个二进制字符串中(每4个字节保存9个数字)。例如,DECIMAL(18,9)将会在小点前后都保存9个数字,总共使用9个字节:小数点前4个字节,小数点一个字节,小数点后4个字节。

由于需要额外的空间和计算开销,只有在需要对小数进行精确计算的时候才使用DECIMAL,比如保存金融数据.

猜你喜欢

转载自lobert.iteye.com/blog/1647260