utf8_unicode_ci和utf8_general_ci、utf8和utf8mb4的區別

一直以來,都不是十分明瞭MySQL中utf8_unicode_ci和utf8_general_ci這兩個排序規則的區別,因此查了下資料記錄一下。

utf8_unicode_ci和utf8_general_ci對於中、英文來說基本上沒有什麼差別,但是如果有用到俄語、法語、德語,就一定要使用utf8_unicode_ci。

兩者的直觀對比:

utf8_general_ci校對速度快,但準確度稍差(一般的開發中忽略不計,還是要以速度爲首選),一般就選用這個就可以了。
utf8_unicode_ci準確度高,但校對速度稍慢。

然後看數據庫的時候,又發現了我對utf8和utf8mb4兩者的區別也是不清楚。。。

MySQL在5.5.3之後增加utf8mb4編碼,mb4就是most bytes 4的意思,是用來兼容四字節的unicode。

自問自答:

utf8已經能夠存下大部分中文漢字,爲什麼還要使用utf8mb4?

utf-8編碼存儲的可能2個字節、3個字節、4個字節的字符,但是在MySQL中,utf8編碼只支持3字節的數據,而移動端的表情數據(比如emoj表情)是4個字節的字符。所以直接往採用utf-8編碼,如果插入表情數據和不常用的漢字,以及任何新增的 Unicode 字符等數據,數據庫都會報錯。

兩者的直觀對比:

utf8 空間佔用小,一般開發足夠。

utf8mb4會多佔用點空間,所以當有類似於存儲表情需求的時候,使用這個。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章