濮阳杆衣贸易有限公司

主頁 > 知識庫 > MySQL中字段類型char、varchar和text的區(qū)別

MySQL中字段類型char、varchar和text的區(qū)別

熱門標簽:南昌高頻外呼系統(tǒng)哪家公司做的好 淄博400電話申請 昆明電信400電話辦理 電話機器人市場趨勢 俄國地圖標注app 百度地圖標注后不顯示 溫州瑞安400電話怎么申請 電銷機器人各個細節(jié)介紹 電銷機器人 行業(yè)

在MySQL中,char、varchar和text類型的字段都可以用來存儲字符類型的數據,char、varchar都可以指定最大的字符長度,但text不可以。

它們的存儲方式和數據的檢索方式也都不一樣。

數據的檢索效率是:char > varchar > text

具體說明:

char:存儲定長數據很方便,CHAR字段上的索引效率級高,必須在括號里定義長度,可以有默認值,比如定義char(10),那么不論你存儲的數據是否達到了10個字節(jié),都要占去10個字節(jié)的空間(自動用空格填充),且在檢索的時候后面的空格會隱藏掉,所以檢索出來的數據需要記得用什么trim之類的函數去過濾空格。

varchar:存儲變長數據,但存儲效率沒有CHAR高,必須在括號里定義長度,可以有默認值。保存數據的時候,不進行空格自動填充,而且如果數據存在空格時,當值保存和檢索時尾部的空格仍會保留。另外,varchar類型的實際長度是它的值的實際長度+1,這一個字節(jié)用于保存實際使用了多大的長度。

text:存儲可變長度的非Unicode數據,最大長度為2^31-1個字符。text列不能有默認值,存儲或檢索過程中,不存在大小寫轉換,后面如果指定長度,不會報錯誤,但是這個長度是不起作用的,意思就是你插入數據的時候,超過你指定的長度還是可以正常插入。

關于存儲空間:

在使用UTF8字符集的時候,MySQL手冊上是這樣描述的:

  • 基本拉丁字母、數字和標點符號使用一個字節(jié);
  • 大多數的歐洲和中東手寫字母適合兩個字節(jié)序列:擴展的拉丁字母(包括發(fā)音符號、長音符號、重音符號、低音符號和其它音符)、西里爾字母、希臘語、亞美尼亞語、希伯來語、阿拉伯語、敘利亞語和其它語言;
  • 韓語、中文和日本象形文字使用三個字節(jié)序列。

結論:

1、經常變化的字段用varchar;

2、知道固定長度的用char;

3、超過255字節(jié)的只能用varchar或者text;

4、能用varchar的地方不用text;

5、能夠用數字類型的字段盡量選擇數字類型而不用字符串類型,這會降低查詢和連接的性能,并會增加存儲開銷。這是因為引擎在處理查詢和連接回逐個比較字符串中每一個字符,而對于數字型而言只需要比較一次就夠了;

6、同一張表出現(xiàn)多個大字段,能合并時盡量合并,不能合并時考慮分表,原因請考 優(yōu)化InnoDB表BLOB,TEXT列的存儲效率

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

您可能感興趣的文章:
  • Spring和MyBatis整合自動生成代碼里面text類型遇到的坑
  • Spring-Data-JPA整合MySQL和配置的方法
  • JPA之映射mysql text類型的問題

標簽:嘉峪關 洛陽 安徽 拉薩 吐魯番 葫蘆島 甘南

巨人網絡通訊聲明:本文標題《MySQL中字段類型char、varchar和text的區(qū)別》,本文關鍵詞  MySQL,中,字段,類型,char,varchar,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL中字段類型char、varchar和text的區(qū)別》相關的同類信息!
  • 本頁收集關于MySQL中字段類型char、varchar和text的區(qū)別的相關信息資訊供網民參考!
  • 推薦文章
    九龙坡区| 德昌县| 吴桥县| 石首市| 赣州市| 嘉善县| 榕江县| 鲁山县| 敦煌市| 康保县| 西峡县| 铜川市| 大化| 建平县| 通城县| 韶山市| 仁寿县| 冷水江市| 中方县| 宁乡县| 五大连池市| 华亭县| 孟连| 金塔县| 海南省| 宁国市| 九龙城区| 富民县| 桦南县| 仪陇县| 康平县| 黄龙县| 阜新市| 遂平县| 花莲县| 隆化县| 镇江市| 汾阳市| 珲春市| 南昌市| 濮阳县|