mysql5.0.3以後,n都表示字元數(varchar(n)) 檢索效率 char varchar text 當varchar長度超過255之後,跟text一致,但是設置varchar(n)的話,可以防止惡意使用text撐爆資料庫 |類型名稱|說明|存儲需求| | | | | |CHAR ...
mysql5.0.3以後,n都表示字元數(varchar(n))
- 檢索效率 char > varchar > text
- 當varchar長度超過255之後,跟text一致,但是設置varchar(n)的話,可以防止惡意使用text撐爆資料庫
類型名稱 | 說明 | 存儲需求 |
---|---|---|
CHAR < M | 固定長度非二進位字元串 | M位元組,1 <= M <= 255 |
VARCHAR(M) | 變長非二進位字元串 | L + 1位元組,在此,L <= M和1 <= M <= 255 |
VARCHAR(M) | 變長非二進位字元串 | L + 2位元組,在此,L <= M和255 < M <= 65535 |
TEXT | 小的非二進位字元串 | L + 2位元組,在此L < 2^16 |
char
- 查詢速度:char最快
- 最大長度:255個字元,utf-8編碼的話,占用255 * 3個位元組
- 占用空間:n
- 其他:
- 在獲取數據出來之後,一定要記得trim空格,因為不足char(n)的長度,會自動填充空格
- 因為定長的char不容易產生碎片,所以char比varchar在空間上也更有效率
varchar
- 查詢速度:varchar次之
- 最大長度:65535個位元組
- 占用空間:實際空間 + 1,會使用1-3個位元組來存儲長度,如果整體長度在0-255bytes之間,長度使用1個位元組表示,如果長度在255以上,那麼就是2個位元組,varchar(10)需要11個存儲空間,varchar(1001)需要1002個存儲空間
- 其他
- 官方手冊定義的varchar最大長度65535指的是所有varchar列長的總和
text
- 查詢速度:text最慢
- 最大長度:跟varchar基本相同,保存65535個字元
- 占用空間:存儲2個位元組長度