mysql之char、varchar、text對比

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
  • 其餘:
  1. 在獲取數據出來以後,必定要記得trim空格,由於不足char(n)的長度,會自動填充空格
  2. 由於定長的char不容易產生碎片,因此char比varchar在空間上也更有效率

varchar

  • 查詢速度:varchar次之
  • 最大長度:65535個字節
  • 佔用空間:實際空間 + 1,會使用1-3個字節來存儲長度,若是總體長度在0-255bytes之間,長度使用1個字節表示,若是長度在255以上,那麼就是2個字節,varchar(10)須要11個存儲空間,varchar(1001)須要1002個存儲空間
  • 其餘
  1. 官方手冊定義的varchar最大長度65535指的是全部varchar列長的總和

text

  • 查詢速度:text最慢
  • 最大長度:跟varchar基本相同,保存65535個字符
  • 佔用空間:存儲2個字節長度
相關文章
相關標籤/搜索