char 和 varchar的區別

2021-08-10 20:33:27 字數 758 閱讀 5654

varchar

儲存了可變長度的字串,是使用較多的字串型別。它比固定長度型別占用更少的儲存空間,因為它只占用了實際需要空間,比較靈活。但如果設定了row_format=fixed建立的myisam引擎表,那麼每行占用固定長的空間,就會造成浪費。

varchar使用額外的1到2位元組來儲存值得長度。如果列的最大長度小於或等於255,則使用1位元組,否則使用2位元組。

varchar的靈活性能節約不少空間,對效能有一定的幫助。但因為是可變長度型別,所以在更新的時候通常長度會發生變化,引發多餘的操作。如果行的長度增加並不再適合原始位置時,具體的行為則會和儲存引擎相關。

當長度大於平均長度,並且很少更改的時候,通常適合使用varchar。這樣就不會輕易發生磁碟碎片問題。當然跟字符集的選擇也有一定的關係,比如utf8佔的長度gbk就不一樣,所以每個字元可能會占用不同的儲存空間。

5.0以後mysql保留字串末尾空格,4.1或之前的老版本都會把空格去掉。

char

char

是固定長度型別,mysql會為它分配足夠的空間。當儲存char值得時候,mysql會自動把末尾空格清除。比較的時候也是同樣清除。

char最佳的使用方案就是儲存很短的字串或者長度近似相同的字串的時候非常有用。如固定長度的md5、定長值、短**等等,不會容易產生碎片,對於很短的值效率高於varchar。char(1)字串對於單位元組字元來說只會占用1個位元組,但是varchar(1)會占用2個位元組,其中1個位元組用來儲存長度資訊。

char和varchar的區別

char char是定長的,也就是當你輸入的字元小於你指定的數目時,char 8 你輸入的字元小於8時,它會再後面補空值。當你輸入的字元大於指定的數時,它會擷取超出的字元。nvarchar n 包含 n 個字元的可變長度 unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的...

char和varchar的區別

char是一種固定長度的型別,varchar則是一種可變長度的型別,它們的區別是 char m 型別的資料列裡,每個值都占用m個位元組,如果某個長度小於m,mysql就會在它的右邊用空格字元補足 在檢索操作中那些填補出來的空格字元將被去掉 在varchar m 型別的資料列裡,每個值只占用剛好夠用的...

mysql中char和varchar區別

結論 char 定長,效率高 varchar 不定長,效率低。char是一種固定長度的型別,varchar則是一種可變長度的型別,它們的區別是 char m 型別的資料列裡,每個值都占用m個位元組,如果某個長度小於m,mysql就會在它的右邊用空格字元補足 在檢索操作中那些填補出來的空格字元將被去掉...