1、更小的通常更好
更小的資料型別,更快速,因為占用更小的磁碟,cpu,快取;只要保證你的資料最大值不超過你的資料型別範圍即可
2、簡單就好
簡單的資料型別操作需要更少的cpu週期,整型比字元操作代價更低;例如時間型別用date,datetime等,不用字串;還有ip位址用整型等
3、盡量避免null(我是禁止null)
null會使索引失效,null很特殊,會使索引統計,和值比較變得複雜;一般不允許儲存null值
整型資料型別
整型所佔空間大小 型別
tinyint
smallint
mediumint
intbigint
長度(單位 bit)816
2432
64如果沒有負值還可以加上 unsigned 屬性,增加儲存空間,比如128 如果是tinyint是不能儲存的,但是如果這個欄位不可能有負數的值,那麼我們就只需要tinyint就能儲存,而不需要用smallint型別;
實數型別
float 四個位元組 32位 double佔八個位元組 64位;decimal精確資料;float和double都是近似值;如過儲存貨幣的話就必須用decimal保證精確性;
字串型別
char和varchar
varchar需要1~2個位元組去儲存字串長度;長度小於或等於255則用乙個位元組儲存,否則用2個位元組儲存長度;如果mysql使用的是row_format = fixed資料的每一行都會採用定長儲存,浪費儲存空間;如果儲存10個位元組的資料char只需要10個位元組,vachar則需要11個位元組;如果字串的最大長度遠大於平均長度,則使用vachar資料型別可以節約儲存空間;列的更新很少,記憶體碎片就不是什麼問題;如果是經常變更的資料,或者是固定長度的資料,char是最好的選擇;比如儲存md5加密的密碼值
blob 和text
這種資料長度的儲存,最好將這些資料分離開來,垂直分表,減少查詢其他字段資料的消耗
enum資料型別
對於只有很少幾個常量值得資料型別,可以採用列舉資料型別,節省儲存空間;這種列舉在儲存時,實際上是一整型儲存的;所以如果是用1,2,3作為列舉值,可能會導致混亂;不建議用數字作為列舉值;關聯查詢時,用列舉型別與字串char/varchar資料型別聯合時,可能會比vachar與vachar聯合效率較慢,正是因為儲存是用整型型別儲存導致的,這樣會多一次資料型別轉換;
時間型別
timestamp資料型別比datetime型別更小,占用4個位元組
MySQL資料型別優化
mysql資料型別眾多,選擇正確的資料型別對於獲得高效能至關重要。遵從以下幾條原則有助力做出更好的選擇。1 更小的資料型別。更小的資料型別通常更快,因為它們占用更少的磁碟 記憶體和cpu快取,並且處理時需要的cpu週期也更少。但也要確保自己沒有低估需要的儲存範圍。2 簡單的資料型別。簡單的資料型別通...
MYSQL資料型別優化
mysql支援的資料型別很多,選擇正確的資料型別對於獲得高效能至關重要,不管儲存哪種資料型別,下面幾個簡單原則都有助於我們做出更好的選擇。1 更小的通常更好,更小的資料型別通常更快,因為它們占用更少的磁碟,記憶體和cpu快取,並且處理時需要的cpu週期也更少。但是要確保不會低估要儲存值的範圍 2 簡...
mysql優化(一) 資料型別優化
mysql支援的資料型別非常多,選擇正確的型別對獲取高效能至關重要。更小的通常更好 一般情況下使用正確儲存資料的最小資料型別,因為它們占取更小的磁碟,記憶體和cpu快取 簡單就好 例如整型比字元操作代價更低,如採用mysql內建型別 date,time,datatime 儲存時間和日期而不是字串,另...