Back to Blog

MySQL 中 VARCHAR 與 TEXT 的差別

在 MySQL 中,VARCHARTEXT 都是用來儲存字串的資料類型,但它們在儲存方式、效能和使用場景上有一些重要的差異。

#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