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()函數來將其轉換

相關文章
相關標籤/搜索