mysql創建表時字段類型選擇與優化


一、選擇原則

1.應該盡量使用可以正確存儲數據的最小字段類型

2.選用簡單的數據類型,例如:一個是盡量用mysql內置的字段類型來存儲日期和時間;另一個存儲IP地址盡量用整型;能用整型的盡量不用字符串類型

3.盡量避免使用NULL,例如:打算創建索引的字段,不要設置為NULL

二、常用的字段類型的選擇說明

1.日期和時間類型

TIMESTAMP與DATETIME都可以存儲相同類型的數據,並且精確到秒,可是TIMESTAMP只使用DATETIME一半的存儲空間,並且它可以根據時區變化,具有特殊的自動更新能力。

存儲空間:TIMESTAMP占用4個字節,DATETIME占用8個字節

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2018-07-21 15:56:39 |
+---------------------+
1 row in set (0.00 sec)

這兩個類型存儲的數據格式類似:2018-07-21 15:56:39

將這個值轉換成時間戳

mysql> select unix_timestamp('2018-07-21 15:56:39');
+---------------------------------------+
| unix_timestamp('2018-07-21 15:56:39') |
+---------------------------------------+
|                            1532159799 |
+---------------------------------------+
1 row in set (0.00 sec)

將時間戳轉換成標准時間

mysql> select from_unixtime('1532159799');
+-----------------------------+
| from_unixtime('1532159799') |
+-----------------------------+
| 2018-07-21 15:56:39.000000  |
+-----------------------------+
1 row in set (0.00 sec)

2.整數類型

tinyint(8bit), smallint(16bit), mediumint(24bit), int(32bit), bigint(64bit)

整數計算一般使用64位的bigint整數,一個細節需要注意的地方,INT(1)與INT(20)對於存儲和計算來說寬度是相同的,對於INT型字段來說指定寬度是多余的

3.實數類型

浮點類型(float, double)與decimal類型在性能上,浮點類型更好一些,同樣范圍的值,浮點類型比decimal占用更少的空間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM