首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL VARCHAR 與 CHAR 存儲差異與選型建議

     編輯:MySQL 綜合教學

MySQL VARCHAR 與 CHAR 存儲差異與選型建議

核心差異

特性CHAR(n)VARCHAR(n)
長度固定可變
存儲不足補空格,固定 n 字節實際長度 + 1 字節(長度前綴),>255 用 2 字節
尾部空格檢索時自動去除保留
速度快(固定長度易定位)稍慢

存儲示例

值CHAR(4) 存儲CHAR 佔用VARCHAR(4) 存儲VARCHAR 佔用
''' '4 字節''1 字節
'ab''ab '4 字節'ab'3 字節
'abcd''abcd'4 字節'abcd'5 字節
'abcdefgh''abcd'4 字節(截斷)'abcd'5 字節(截斷)

檢索行為差異


CREATE TABLE test (a VARCHAR(4), b CHAR(4));
INSERT INTO test VALUES ('ab ', 'ab ');
SELECT CONCAT(a, '+'), CONCAT(b, '+') FROM test;
-- 結果:'ab +'  vs  'ab+'

引擎選型建議

  • MyISAM:傾向 CHAR(固定行格式,查找快)
  • InnoDB:推薦 VARCHAR(行溢出機制、壓縮友好,節省空間)

業務場景選擇

  • 長度固定(身份證、手機號、MD5):CHAR
  • 長度不固定(地址、描述、姓名):VARCHAR
  • 多語言/Emoji:NCHAR/NVARCHAR(Unicode)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved