mysql schema

选择优化的数据类型java

 1.更小的一般更好
2.简单就好
3.尽可能避免null函数

1.整型优化

tinyint           8 位    -128 ~ 127            对应 Byte (java)
smallint        16位    -32768~32767      对应 Short (java)
mediumint  24位  
int                32位                                    对应 Integer(java)
bitint            64位                                   对应 Long (java)
注意:定义如:int(10) 和 int(20) 是没有意义的,不会改变实际的存储值spa

2.实数设计

float           浮点型,含字节数为4,32位,(7个有效位)   对应 Float (java)ip

double     双精度实型,含字节数为8,64位 ,(7个有效位) 对应 Double(java)内存

decimal    数字型,128位, 小数28个有效位,不存在精度损失,经常使用于银行账目计算。md5

 

说明1: float(5,3)  5表示小数左边+右边总的位数,  3表示 小数位最多3位。这样整数位为2位
如:  1.353  正常     10.2335 正常(最后一位四舍五入)    100.1 溢出   ci

说明2:字符串

float f = 345.98756f;--结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。

double d=345.975423578631442d;--结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。

数值存储范围越小的精度越高,存储数值范围越大,精度就越不许确,若是存储正常金额的状况下,使用money,好处在于能够存储不指定的小数点位数的数值,比较真实。若是对于既要求精度,又固定小数点位数的数值存储,采用decimal(numeric),优势在于能够自定义小数点位数,精度高。如特殊状况,如数值范围巨大只能用float(real)类型了,此类型通常不提倡使用。

 

3字符型

varchar  变长     如 varchar(10) ,将存储10个字符长度 ,设计中不要刻意的将字符长度调大,
                          大长度会消耗更多的内存 ,最大 65535

char      定长     适合存在密码的md5值,等其余固定长度的字符 ,最大 65535

binary   二进制形式,对应 char

barbinary 二进制形式,对应 varchar

text    存储大长度字符

blob   二进制形式存储,对应 text

技巧: text 很长,能够使用 substring(column,length) 来截取, 在 order by 中一样也适用

4.日期

date            YYYY-MM-DD

time            HH:MM:SS

year            YYYY

datetime     YYYY-MM-DD HH:MM:SS     1001年 - 9999年    使用 8 个字节存储

timestamp    1970年 - 2038 年  

5. 枚举

enum

6.位

bit

set 

小记:

对于IPv4 人们常用 varchar(15) 来存储,然而,它其实是32位无符号的整数,不是字符串,用小数点将地址分开,只是为了让人阅读,因此应用用无符号整数存储ip地址,能够使用 inet_aton() 与inet_ntoa()函数来将其转换

相关文章
相关标签/搜索