MySQL中char、varchar和text三者的區(qū)別是什么

今天就跟大家聊聊有關MySQL中char、varchar和text三者的區(qū)別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)是一家專業(yè)提供皋蘭企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計、成都做網(wǎng)站、H5網(wǎng)站設計、小程序制作等業(yè)務。10年已為皋蘭眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。

具體說明:

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

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

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

關于存儲空間:

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

  • 基本拉丁字母、數(shù)字和標點符號使用一個字節(jié);

  • 大多數(shù)的歐洲和中東手寫字母適合兩個字節(jié)序列:擴展的拉丁字母(包括發(fā)音符號、長音符號、重音符號、低音符號和其它音符)、西里爾字母、希臘語、亞美尼亞語、希伯來語、阿拉伯語、敘利亞語和其它語言;

  • 韓語、中文和日本象形文字使用三個字節(jié)序列。

結論:

1、經(jīng)常變化的字段用varchar;

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

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

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

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

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

看完上述內(nèi)容,你們對MySQL中char、varchar和text三者的區(qū)別是什么有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

標題名稱:MySQL中char、varchar和text三者的區(qū)別是什么
網(wǎng)頁地址:http://bm7419.com/article30/geihpo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站營銷、虛擬主機、手機網(wǎng)站建設、服務器托管、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)