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個字節長度