char和varchar型別相似,都是用來儲存字串,但是它們的儲存和檢索方式不同,char屬於固定長度的字元型別,而varchar屬於可變長度的字元型別
因為char是固定長度的,所以它的處理速度比varchar快得多,確定是浪費儲存空間.程式需要對行尾空格進行處理,所以對哪些長度變化不大並且對查詢速度有較高要求的資料可以考慮使用char型別來儲存.
另外,隨著mysql版本的不斷公升級,varchar資料型別的效能也在不斷改進並提高,所以在許多的應用中,varchar型別被更多使用
再mysql中不同的儲存引擎對char和varchar使用原則 有所不同,
myisam儲存引擎:建議使用固定長度的資料列代替可變長度的資料列
memory儲存引擎,目前都使用固定長度的資料列儲存,無論使用char和varchar列都沒有關係,兩者都是作為char型別處理
innodb儲存引擎,建議使用varchar型別,對於innodb資料表,內部的行儲存格式沒有區分固定長度和可變長度列(所有資料行都使用指向資料列值的頭指標),因此在本質上,使用固定長度的char列不一定比使用可變長度的varchar列效能要好,因而,主要的效能因素是資料行使用的儲存總量,由於char平均占用的空間多於varchar,因此使用varchar來最小化需要處理的資料行的儲存總量和磁碟i/o是比較好的.
MySQL char與varchar的區別
char表示定長,長度固定,varchar表示變長,即長度可變。當char如果插入的長度小於定義長度時,則用空格填充 varchar小於定義長度時,還是按實際長度儲存,插入多長就存多長。因為其長度固定,char的訪問速度還是要比varchar要快得多,方便程式的儲存與查詢 但是char也為此付出的是...
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的值均帶...