首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL CHAR、VARCHAR、TEXT/BLOB 深度差異比較與選型指南

     編輯:MySQL 資料庫相關知識

核心差異速查表

特性CHAR(N)VARCHAR(N)TEXT / BLOB
長度固定 0~255 字元可變 0~65,535 位元組4 層級至 4GB
儲存方式右側補空格至定長1-2 位元組長度前綴 + 實際內容溢位頁 (Off-page) 儲存
尾部空格讀取時移除保留 (5.0.3+)保留
大小寫轉換無無無
字符集/校對有有TEXT 有 / BLOB 無 (二進位)
預設值允許允許不允許
索引全長/前綴全長/前綴必須指定前綴長度
排序/比較補空格比較補空格比較TEXT 依校對規則 / BLOB 依位元組值
max_sort_length 影響否否是 (預設 1024 位元組)

TEXT/BLOB 四種規格

類型最大長度長度前綴
TINYTEXT / TINYBLOB255 B1 位元組
TEXT / BLOB64 KB2 位元組
MEDIUMTEXT / MEDIUMBLOB16 MB3 位元組
LONGTEXT / LONGBLOB4 GB4 位元組

選型決策樹

  1. 長度固定、極短 (如 MD5、ISO 代碼、Y/N) → CHAR
  2. 長度可變、< 64KB、頻繁查詢/索引 → VARCHAR
  3. 長文本、文章、日誌、JSON 片段 → TEXT (需指定索引前綴)
  4. 二進位資料 (圖片、加密串、壓縮包) → BLOB
  5. 超大物件 → 考慮外部儲存 + 資料庫存路徑

效能與限制提醒

  • VARCHAR 實際上限受 max_row_size (65,535 位元組) 限制,含所有欄位
  • TEXT/BLOB 不能有 DEFAULT 值
  • ORDER BY / GROUP BY 大欄位受 max_sort_length 限制,可用 SUBSTRING(col,1,N) 繞過
  • 客戶端/伺服器傳輸受 max_allowed_packet 限制,雙端皆需調大
  • 每個 BLOB/TEXT 值獨立記憶體分配,大量欄位易造成記憶體碎片

ODBC/Connector 對應

  • BLOB → LONGVARBINARY
  • TEXT → LONGVARCHAR
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved