mysql數據庫字段類型的選擇原則

原文連接:http://blog.csdn.net/u013412790/article/details/51615407數據庫

數據庫類型的選擇對數據庫的性能影響很大 
1 . 數據類型會影響存儲空間的開銷函數

2 . 數據類型會影響數據查詢性能oop

因此當一個數據類型能夠有多種選擇多種類型的時候,應該優先考慮數字類型,其次是日期或二進制類型,最後應該是字符類型。對於相同級別的數據類型,應該優先選擇佔用空間小的數據類型。 
原理:在對數據進行比較(查詢條件,JOIN條件及排序)操做時:一樣的數據,字符處理每每比數字處理慢,並且在數據庫中,數據的處理是以頁爲單位,列的長度越小,數據類型佔用的空間越小,利於性能的提高。性能

下面是字段類型所佔的字節大小大數據

這裏寫圖片描述

Tinyint,SmallInt,Mediumint,Int,Bingint該如何選擇

1 .從 0 到 255 的整型數據。存儲大小爲 1 字節。適合使用Tinyint.net

2.從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數據。存儲大小爲 2 個字節。適合使用smallintblog

3.從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(全部數字)。存儲大小爲 4 個字節。int 的 SQL-92 同義字爲 integer。適合使用int排序

4.從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數據(全部數字)。存儲大小爲 8 個字節。適合使用bigint圖片

char與varchar如何選擇

1.若是列中要存儲的數據的長度差很少是一致的,則應該考慮char,不然應該考慮用varchar.ci

2.若是列中最大數據的長度小於50Byte,則通常也考慮使用char(固然,若是這個列不多用,則基於節省空加你和減小I/O的考慮,仍是可使用varchar)

3.通常不宜定義大雨50Byte的char類型列。 
注意:utf8每個字符時3Byte

decimal和float如何選擇

1.decimal用於存儲精確數據,而float只能用於存儲非精確數據,故精確數據最好使用decimal類型

2.因爲float的存儲空間的開銷通常比decimal小(精確到7爲小數只須要4個字節,而精確到15位小數只須要8個字節)故非精確數據類型建議使用float

時間類型如何存儲

1.使用int來存儲時間字段的優缺點 
優勢:字段的長度比datetime小 
缺點:使用不方便,須要函數進行轉換 
限制:只能存儲到2038-1-19 11:14:07 即2^32爲2147483648

2,須要考慮須要存儲時間的粒度 年 月 日 小時 分鐘 秒 周

相關文章
相關標籤/搜索