MySQL 中 VARCHAR 與 TEXT 的差別
在 MySQL 中,VARCHAR 和 TEXT 都是用來儲存字串的資料類型,但它們在儲存方式、效能和使用場景上有一些重要的差異。
VARCHAR
VARCHAR 是用來儲存可變長度的字串。在定義 VARCHAR 欄位時,您需要指定一個最大長度 (例如 VARCHAR(255)),這個長度代表了您可以儲存的最大字元數。
特性:
- 需要指定最大長度。
- 儲存的長度是可變的,只會佔用實際儲存的字元數加上 1 或 2 個位元組的長度紀錄。
- 最大長度為 65,535 個字元 (但會受到資料列大小的限制)。
- 可以建立索引。
TEXT
TEXT 是用來儲存長文字的資料類型。它不需要指定最大長度,可以儲存大量的文字資料。
特性:
- 不需要指定最大長度。
- 最大長度為 65,535 個字元。
- 無法在整個欄位上建立索引 (但可以建立前綴索引)。
VARCHAR vs TEXT
| 特性 | VARCHAR | TEXT |
|---|---|---|
| 最大長度 | 65,535 (需指定) | 65,535 (不需指定) |
| 儲存空間 | 實際長度 + 1/2 位元組 | 實際長度 + 2 位元組 |
| 索引 | 可建立 | 只能建立前綴索引 |
| 預設值 | 可設定 | 不可設定 |
| 查詢效能 | 較快 | 較慢 |
何時使用?
VARCHAR: 當您要儲存的字串長度是可預期的,並且通常不會太長時,例如使用者名稱、文章標題、電子郵件地址等,建議使用VARCHAR。TEXT: 當您要儲存的字串長度不固定,並且可能會很長時,例如文章內容、留言、日誌等,建議使用TEXT。