標籤:
選擇合適的資料類型:
char和varchar:
+---------+------------+| char(6) | varchar(6) |+---------+------------+| | || str | str || str123 | str123 || str123 | str123 |+---------+------------+4 rows in set (0.00 sec)
char(6)的儲存需求總是6個位元組。
varchar(6)儲存‘‘需要個1位元組。
varchar(6)儲存‘str‘需要4個位元組。
varchar(6)儲存‘str123‘需要7個位元組。
varchar(6)儲存‘str123no‘需要7個位元組。
總結:char(n)所需要的儲存位元組為n
varchar(n)所需要的位元組依賴於插入的字串m,m+1<=位元組<=n+1
text與blob
一般儲存少量字串的時候,我們會選擇char或者varchar,而在儲存較大文本的時候通常會選擇text或者blob。二者之間的主要差別是blob能用來儲存位元據,比如照片。而text只能用來儲存字元資料,比如一片文章。
text又分為text、mediumtext、longtext
blob又分為blob、mediumblob、longblob
主要區別就是儲存文本長度不同和儲存位元組不同。
經常使用blob和text類型會引起效能的降低。刪除操作會在表中留下很大的"空洞"(並不會因為資料的減少而清空空間。類似於書架,書拿走了,空間還在佔用),可以定期最佳化表進行磁碟重組。optimize table
日期類型的選擇
DATE、TIME、DATETIME、TIMESTAMP
幾個原則:
如果只需要年,用YEAR類型就可以。
如果需要的時間範圍比較大,用DATETIME
如果給不同時區使用者使用,則用TIMESTAMP
浮點數和定點數
浮點數一般使用者包含有小數位的數值。float、double如果插入資料到過定義的精度有可能被四捨五入。定點數實際上是以字串形式存放的。所以定點數可以精確的儲存資料。如果實際插入的資料大於精度,則會警示。decimal用來表示定點數。
在精度要求比較高的應用中類似貨幣要使用定點數儲存。
MySQL 資料類型的簡單選擇