标签:提升性能 索引 字符型 min 精确 空间 float 存储 medium
tinyint,smallint.,mediumint,int,bigint.分别是1,2,3,4,8个字节。也就是8,16,24,32,64位,存储的数据范围为-2(n-1)到2(n-1)-1。
如果使用unsigned属性,那么表示不允许负数。那么存储的范围就变成了0到2n-1。
mysql可以为整数类型制定宽度,如int(1)和int(20),只是多了一个宽度约束,在内部,他们都是int。
实数是带小数点的数字。然而他们的作用并不局限与这个。如可以使用decimal存储比bigint还要大的整数。
不精确数字类型(浮点类型):float double,他们分别为4个字节,8个字节。
关于指定精度,书上一掠而过了,以下内容来自网络:
float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
decimal最多只能65个数字,也就是是那面总的M最大只能是65。
同样大小的decimal要比float和double占据更大的空间,耗费更多的cpu,所以如果不是要求精确的计算(如财务计算),最好不要使用decimal。
书上提到一种委婉的办法,将有小数的decimal数字成与一定的倍数,如1万倍,然后存储为bigint。可以提升性能。我在想这种委婉的办法带来的性能提升划算吗。可能会在极端的环境下使用吧。
标签:提升性能 索引 字符型 min 精确 空间 float 存储 medium
原文地址:http://www.cnblogs.com/xiaolang8762400/p/6959786.html