MySQL中字段類型char、varchar和text的區(qū)別
在MySQL中,char、varchar和text類型的字段都可以用來存儲(chǔ)字符類型的數(shù)據(jù),char、varchar都可以指定最大的字符長度,但text不可以。
它們的存儲(chǔ)方式和數(shù)據(jù)的檢索方式也都不一樣。
數(shù)據(jù)的檢索效率是:char > varchar > text
具體說明:
char:存儲(chǔ)定長數(shù)據(jù)很方便,CHAR字段上的索引效率級(jí)高,必須在括號(hào)里定義長度,可以有默認(rèn)值,比如定義char(10),那么不論你存儲(chǔ)的數(shù)據(jù)是否達(dá)到了10個(gè)字節(jié),都要占去10個(gè)字節(jié)的空間(自動(dòng)用空格填充),且在檢索的時(shí)候后面的空格會(huì)隱藏掉,所以檢索出來的數(shù)據(jù)需要記得用什么trim之類的函數(shù)去過濾空格。
varchar:存儲(chǔ)變長數(shù)據(jù),但存儲(chǔ)效率沒有CHAR高,必須在括號(hào)里定義長度,可以有默認(rèn)值。保存數(shù)據(jù)的時(shí)候,不進(jìn)行空格自動(dòng)填充,而且如果數(shù)據(jù)存在空格時(shí),當(dāng)值保存和檢索時(shí)尾部的空格仍會(huì)保留。另外,varchar類型的實(shí)際長度是它的值的實(shí)際長度+1,這一個(gè)字節(jié)用于保存實(shí)際使用了多大的長度。
text:存儲(chǔ)可變長度的非Unicode數(shù)據(jù),最大長度為2^31-1個(gè)字符。text列不能有默認(rèn)值,存儲(chǔ)或檢索過程中,不存在大小寫轉(zhuǎn)換,后面如果指定長度,不會(huì)報(bào)錯(cuò)誤,但是這個(gè)長度是不起作用的,意思就是你插入數(shù)據(jù)的時(shí)候,超過你指定的長度還是可以正常插入。
關(guān)于存儲(chǔ)空間:
在使用UTF8字符集的時(shí)候,MySQL手冊上是這樣描述的:
- 基本拉丁字母、數(shù)字和標(biāo)點(diǎn)符號(hào)使用一個(gè)字節(jié);
- 大多數(shù)的歐洲和中東手寫字母適合兩個(gè)字節(jié)序列:擴(kuò)展的拉丁字母(包括發(fā)音符號(hào)、長音符號(hào)、重音符號(hào)、低音符號(hào)和其它音符)、西里爾字母、希臘語、亞美尼亞語、希伯來語、阿拉伯語、敘利亞語和其它語言;
- 韓語、中文和日本象形文字使用三個(gè)字節(jié)序列。
結(jié)論:
1、經(jīng)常變化的字段用varchar;
2、知道固定長度的用char;
3、超過255字節(jié)的只能用varchar或者text;
4、能用varchar的地方不用text;
5、能夠用數(shù)字類型的字段盡量選擇數(shù)字類型而不用字符串類型,這會(huì)降低查詢和連接的性能,并會(huì)增加存儲(chǔ)開銷。這是因?yàn)橐嬖谔幚聿樵兒瓦B接回逐個(gè)比較字符串中每一個(gè)字符,而對于數(shù)字型而言只需要比較一次就夠了;
6、同一張表出現(xiàn)多個(gè)大字段,能合并時(shí)盡量合并,不能合并時(shí)考慮分表,原因請考 優(yōu)化InnoDB表BLOB,TEXT列的存儲(chǔ)效率
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- mysql中char與varchar的區(qū)別分析
- MySQL中把varchar類型轉(zhuǎn)為date類型方法詳解
- MySQL數(shù)據(jù)庫char與varchar的區(qū)別分析及使用建議
- MySQL中VARCHAR與CHAR格式數(shù)據(jù)的區(qū)別
- 對比MySQL中int、char以及varchar的性能
- MySQL數(shù)據(jù)庫中varchar類型的數(shù)字比較大小的方法
- MySQL數(shù)據(jù)庫varchar的限制規(guī)則說明
- MySQL中varchar和char類型的區(qū)別
- MySQL中CHAR與VARCHAR類型舉例解析
相關(guān)文章
SQL中日期與字符串互相轉(zhuǎn)換操作實(shí)例
我們經(jīng)常出于某種目的需要使用各種各樣的日期格式,當(dāng)然我們可以使用字符串操作來構(gòu)造各種日期格式,下面這篇文章主要給大家介紹了關(guān)于SQL中日期與字符串互相轉(zhuǎn)換操作的相關(guān)資料,需要的朋友可以參考下2022-10-10
MySQL生成連續(xù)的數(shù)字/字符/時(shí)間序列的方法
有時(shí)候?yàn)榱松蓽y試數(shù)據(jù),或者填充查詢結(jié)果中的數(shù)據(jù)間隔,需要使用到一個(gè)連續(xù)的數(shù)據(jù)序列值,所以,今天我們就來介紹一下如何在 MySQL 中生成連續(xù)的數(shù)字、字符以及時(shí)間序列值,需要的朋友可以參考下2024-04-04
Mysql避免重復(fù)插入數(shù)據(jù)的4種方式
這篇文章主要介紹了Mysql避免重復(fù)插入數(shù)據(jù)的4種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

