數(shù)據(jù)庫 varchar vs char

char 與 varchar都是數(shù)據(jù)庫存儲字符串的存儲類型

區(qū)別:

  • char是固定長度存儲方式,實(shí)際存儲長度沒達(dá)到設(shè)定長度時會填充空格。最大存儲長度只有255
  • varchar是變長存儲,只制定最大存儲長度,實(shí)際長度按照實(shí)際字符長度來。最大存儲長度為65535(5.0.3以前為255)
  • varchar數(shù)據(jù)更新時,如果新存儲的數(shù)據(jù)長度變大,會采用分頁或者拆分的方式。實(shí)際對性能也沒有影響,innodb采用頁管理數(shù)據(jù),數(shù)據(jù)移動是現(xiàn)在內(nèi)存完成再寫到磁盤,因此數(shù)據(jù)移動很快
    mysql innodb數(shù)據(jù)庫性能實(shí)踐
  • 查找char數(shù)據(jù)也沒有比varchar數(shù)據(jù)速度更快,上面的實(shí)驗(yàn)也驗(yàn)證了兩者性能沒有差別,
    char vs varchar

FALSE: a char is just a varchar2 blank padded - we do not store strings "at a specified position from each other". We do search for the end of the string - we use a leading byte length to figure things out.

使用總結(jié)

  • 一般優(yōu)先使用varchar,不耗費(fèi)存儲空間,一些特殊情況下可以使用char

  • 當(dāng)字符串長度固定時。使用char。例如存儲MD5哈希值,或者uuid,使用char

  • 當(dāng)字符串長度較小。例如只有10個以內(nèi)的字符

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容