X
    Categories: My_Note

MySQL 欄位格式 CHAR 與 VARCHAR 的差異

MySQL 規劃欄位的時候, 常常會用到 char 與 varchar, 那這兩個的差異在哪邊?  怎麼樣使用才能節省空間呢?

MySQL CHAR 與 VARCHAR 的差異

此篇文章解釋說明的很清楚, 之前一直認為 varchar 會比較省空間, 原來是不一定的~

詳見: CHAR vs VARCHAR in MySQL, 下述內容摘錄整理自此篇:

下述就來對 CHAR 與 VARCHAR 做簡單的比較.

容忍長度
  • char: 0 ~ 255
  • varchar: 0 ~ 65535
儲存方式 與 佔用容量

CHAR(5)

  • 內容 vs 實際儲存
  • 'ex'     'ex   ' 5 byptes # 會多存三個空白
  • 'expe'   'expe ' 5 byptes
  • 'exper'  'exper' 5 byptes
  • 'expert' 'exper' 5 byptes

VARCHAR(5)

  • 內容 vs 實際儲存
  • 'ex'     'ex' 3 byptes # 多 1 byte 是存長度
  • 'expe'   'expe' 5 byptes
  • 'exper'  'exper' 6 byptes
  • 'expert' 'exper' 6 byptes # 多 1 byte 不是存 t, 而是存長度
  • 註: VARCHAR 超過 255 的話, 會多 2 bytes.

由上述可知, 若是對 CHAR(1) 這種 Flag(內容可能是存 y/n), 使用 VARCHAR 反而會多存 1 byte. (1 byte 內容, 1 byte 長度)

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post