MySQL性能優化之char、varchar、text的區別


參考來源:https://blog.csdn.net/brycegao321/article/details/78038272   

在存儲字符串時, 可以使用char、varchar或者text類型, 那么具體使用場景呢?

        參考下面這個表結構:

1、 char長度固定, 即每條數據占用等長字節空間;適合用在身份證號碼、手機號碼等定。

2、 varchar可變長度,可以設置最大長度;適合用在長度可變的屬性。

3、 text不設置長度, 當不知道屬性的最大長度時,適合用text。

 

按照查詢速度: char最快, varchar次之,text最慢。

 

char:char(n)中的n表示字符數,最大長度是255個字符; 如果是utf8編碼方式, 那么char類型占255 * 3個字節。(utf8下一個字符占用1至3個字節)

 

varchar:varchar(n)中的n表示字符數,最大空間是65535個字節, 存放字符數量跟字符集有關系;

     MySQL5.0.3以前版本varchar(n)中的n表示字節數;

     MySQL5.0.3以后版本varchar(n)中的n表示字符數;

  PS:varchar實際范圍是65532或65533, 因為內容頭部會占用1或2個字節保存該字符串的長度;如果字段default null(即默認值為空),整條記錄還需要1個字節保存默認值null。

       如果是utf8編碼, 那么varchar最多存65532/3 = 21844個字符。

 

text:

跟varchar基本相同, 理論上最多保存65535個字符, 實際上text占用內存空間最大也是65535個字節; 考慮到字符編碼方式, 一個字符占用多個字節, text並不能存放那么多字符; 跟varchar的區別是text需要2個字節空間記錄字段的總字節數。

PS: 由於varchar查詢速度更快, 能用varchar的時候就不用text。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM