mysql 資料型別優化

2021-08-19 22:20:36 字數 1226 閱讀 9365

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 儲存時間和日期而不是字串,另...