MySQL char與varchar的區別

2021-10-11 00:24:39 字數 782 閱讀 6316

char表示定長,長度固定,varchar表示變長,即長度可變。當char如果插入的長度小於定義長度時,則用空格填充;varchar小於定義長度時,還是按實際長度儲存,插入多長就存多長。

因為其長度固定,char的訪問速度還是要比varchar要快得多,方便程式的儲存與查詢;但是char也為此付出的是空間的代價,因為其長度固定,所以會佔據多餘的空間,可謂是以空間換取時間效率。varchar則剛好相反,以時間換空間。

對 char 來說,最多能存放的字元個數 255,和編碼無關。

而 varchar ,最多能存放 65532 個字元。varchar的最大有效長度由最大行大小和使用的字符集確定。整體最大長度是 65,532位元組。

因此,varchar的可操作空間更大。

該欄位資料集的平均長度與最大長度是否相差很小,若相差很小優先考慮char型別,反之,考慮varchar型別。例如該變數是用來儲存使用者的暱稱的,不同使用者使用的暱稱區別很大,所以採用varchar更合理。

若欄位經常需要更新,則優先考慮char型別,由於char型別為定長,因此不容易產生碎片。

對於字段值儲存很小的資訊,如性別等,優先選取char型別,因為varchar型別會占用額外的位元組儲存字串長度資訊。

當我們能夠選取char型別的時候,或者說空間消耗相對並不是影響因素的重點時,盡量選取char型別,因為在其他方面,char型別都有著或多或少的優勢。而當空間消耗成為了很大的影響因素以後,我們則考慮使用varchar型別。

MySQL Char與VARCHAR的區別

char和varchar型別相似,都是用來儲存字串,但是它們的儲存和檢索方式不同,char屬於固定長度的字元型別,而varchar屬於可變長度的字元型別 因為char是固定長度的,所以它的處理速度比varchar快得多,確定是浪費儲存空間.程式需要對行尾空格進行處理,所以對哪些長度變化不大並且對查詢...

MySQL資料型別之char與varchar

測試環境 mysql 5.7.17 各位dba同事及開發童鞋,相信你們看了這篇文章,會徹底明白char與varchar應該如何去選擇使用。首先講解一下char與varchar。char n n的最大值為255 varchar n n的理論最大值65535,其實也就最多65532 這裡需要注意,在my...

Mysql char和varchar的區別

create table bbb id bigint 20 not null,a varchar 10 default null,b char 10 default null,primary key id engine innodb default charset utf8mb4 插入a,b的值均帶...