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


原文鏈接:http://blog.csdn.net/u013412790/article/details/51615407

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

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

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

下面是字段類型所占的字節大小

這里寫圖片描述

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

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

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

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.

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,需要考慮需要存儲時間的粒度 
年 月 日 小時 分鍾 秒 周


免責聲明!

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



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