資料庫型態的選擇


Posted by Wangpoching on 2021-06-15

資料庫欄位型態 VARCHAR, TEXT 與 CHAR 的差別是什麼

在新增 SQL 的 TABLE 欄位的時候,會遇到 TEXTVARCHAR 以及 CHAR 的選擇,是個讓人困擾的問題。

首先來比較 VARCHAR 以及 CHAR。CHAR 以及 VARCHAR 都可以設定一個 length 的參數,不過兩者對於 length 的解釋稍有不同。對於 CHAR 來說,length 代表每筆資料都固定是 legth 的長度;對於 VARCHAR 來說,length 代表每筆資料不能超過 length 的長度,所以說,VARCHAR 可以解釋成 length-variable CHAR (長度可變的 CHAR)。

再來看看 TEXT,text 沒辦法設定 length,所以它的彈性最大。

TEXTVARCHAR 以及 CHAR 還有不同的地方 - 最大儲存空間,底下來比較一下 (XAMPP version 8.0.7)。

1.CHAR:A fixed length string (0 - 255)
2.VARCHAR:A variable-length string (0 - 65535)
3.TEXT:A TEXT column with a maximum length of 65,535 (2^16 - 1) characters, stored with a two-byte prefix indicating the length of the value in bytes

string 代表的是 byte (8 bits),而不同的編碼需要花費不同數目的 bytes 去存取一個 character,所以 TEXT 很明顯的擁有最大的存取長度。

最後來看看他們的使用時機。

  1. 長度常常變化的用 varchar
  2. 知道固定長度的用 char
  3. 太長的字串只能用 varchar 或者 text
  4. 能用 varchar 的地方不用 text

為甚麼長度常常變化的地方要用 varchar 呢? 因為在 VARCHAR 的設定上我們只是給它一個最大值,然后系統會根據實際數據量來分配適合的空間。所以相比 CHAR 而言,可以占用更少的儲存空間。


#MySQL #varchar #char #text







Related Posts

Day03  自製收費廣告版位 - 使用 react-intersection-observer

Day03 自製收費廣告版位 - 使用 react-intersection-observer

Sequelize update 後的回傳值

Sequelize update 後的回傳值

在迴圈內依條件判斷新增元素

在迴圈內依條件判斷新增元素


Comments