| 特性 | VARCHAR(M) | TEXT |
|---|---|---|
| 最大長度 | 65,535 位元組(受行長度限制) | 65,535 字元(約 64KB) |
| 儲存開銷 | L+1 或 L+2 位元組(長度前綴) | L+2 位元組 |
| 行內儲存 | 是(未溢位) | 否(指標 + 溢位頁) |
| 索引支援 | 全長/前綴索引 | 僅前綴索引 |
| 預設值 | 可設定 | 不可設定(5.6+ 可) |
VARCHAR 盡量用,行內儲存、可建完整索引、效能更好。VARCHAR(大值) 或 TEXT。TEXT(模糊查詢不影響速度)。VARCHAR 受行長度 65,535 限制,TEXT 不計入行長度。MySQL 5.0.3+ VARCHAR 支援 65,535 位元組,大幅縮減過去需用 TEXT 的場景;但實際字元上限取決於字元集(utf8 約 21,845 字元)。
「能 VARCHAR 不 TEXT」是鐵律。依業務長度預估、索引需求、行長度預算三維度決策,避免過度使用 TEXT 導致索引受限、溢位頁 I/O 增加。