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
。