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

MySQL CHAR 與 VARCHAR 選型實戰:固定長 vs 可變長、儲存開銷與效能

     編輯:MySQL 綜合教學

核心差異速查

項目CHAR(M)VARCHAR(M)
長度固定 M (0-255)可變 0-65535
儲存右補空格至 M 字節實際長度 + 1/2 字節
讀取去尾空格保留尾空格
UPDATE原地修改、無碎片可能行遷移、產生碎片
索引固定寬度、極快可變長、稍大

決策指南

  1. 真固定長 (MD5、UUID、郵遞區號、股票代碼) → CHAR。
  2. 多數行接近最大長度 (如 90% 行長 18-20 字元,定義 20) → CHAR 更省 (無長度字節)。
  3. 長度分布廣、平均遠小於最大 → VARCHAR 節省空間。
  4. 高頻 UPDATE、大表 → CHAR 避免碎片,或 VARCHAR + 定期 OPTIMIZE TABLE。
  5. > 255 字元 → 必須 VARCHAR 或 TEXT。

實戰案例:股票表

  • stock_name CHAR(8):中文股名固定 4 字 = 8 字節 (utf8mb4 視編碼)。
  • stock_code CHAR(6):滬市 6 位、深市 4 位 → 定 CHAR(6),深市右補空格,查詢 WHERE code = '000001' 自動匹配。
  • 若用 VARCHAR(6):滬市佔 7 字節 (6+1),深市 5 字節,但上海股票更多,平均佔用反而更大。

TEXT 系列定位

VARCHAR(65535) 已覆蓋大多數文本需求,TEXT 僅用於:需超過 64KB、或不想計算精確長度、或歷史相容。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved