mysql 列類型選擇

原則:

能小不要大

能定不要變

能數值,不要字符串。

1、在精度要求高的應用中,建議使用定點數來存儲數值,以保證結果的準確性

create table t2(price float(9,2),dprice decimal(9,2));

insert into t2 values(1234567.55,1234567.55);

 

 

 

2、錄入手機號帶來的問題,

使用char(11)會佔用較多的字節,gbk佔用2字節*11,utf-8佔用3*11,

可以使用bigint,寬度是20,只佔用8個字節。

uploading.4e448015.gif

 

3、 ip地址也可以採用int整型。

如果用varchar()來存儲ip地址。

255.255.255.255       utf-8字符串會佔用15*3+2=47字節,

如果使用int的只佔用4個字節。

使用函數進行轉換:

inet_aton():把ip地址轉換成整數

inet_ntoa();把整數轉換成ip地址。

 

IPv4存儲爲int型

PHP:

ip2long() :ip地址到整數的轉換,

long2ip():整數到ip地址的轉換。

MySQL: inet_aton(), inet_ntoa();

4、根據需求選擇最小整數類型。比如用戶在線狀態:離線,在線,離開,忙碌,隱式等,可以採用0,1,2,3,來表示。

5、避免字段內容爲null,原因:null不利於索引,要用特殊的字節來標註,在磁盤上佔據的空間其實更大。

create table t3(mobile bigint);

create table t5(name char(1) not null default '');

insert into t5 values('a'),('b'),('c');

create table t6(name char(1));

insert into t6 values('a'),(null),('c');

 

另外的一個字節用於維護null,所以以後在創建表時,避免字段內容爲null

uploading.4e448015.gif

 

NULL的判斷只能用is null,is not null

NULL 影響查詢速度,一般避免使值爲NULL

 

6、三範式

第一範式:數據的字段不能在分割,只要是關係型數據庫則天生就滿足第一範式。

第二範式:通俗的說,就是不能有完全相同的兩條記錄,可以使用一個主鍵解決。

第三範式:通俗的說,存儲的數據不能冗餘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章