redd 發表於 2020-4-28 14:11:44

MySQL 編碼

utf8_unicode_ci 在對文字排序上會比 utf8_general_ci 更精準,utf8_general_ci 是一種簡易化的排序規則,這個規則會把一些相似文字的定義成同一層排序,所以文字排序上無法像 utf8_unicode_ci 這麼精準。

utf8_general_ci 的效能會比 utf8_unicode_ci 好一些,不過影響的效能很小,很難感受出差別,除非你真的很在意這種微小的效能差異,否則建議使用 utf8_unicode_ci 就可以了。

redd 發表於 2020-4-28 14:15:32

如果各位朋友是第一次安裝的話,則非常建議你將 SQL 資料夾編碼改使用 utf8_unicode_ci,才不會照成未來搬家的問題。

redd 發表於 2020-4-28 14:20:05

若會存中文、德文…等非英文的字、或存 Emoji 的話,建議用 utf8mb4_unicode_ci,在 MySQL 5.5.3 以後,一般來說會建議用 utf8mb4。因為它才是真正的 UTF-8 編碼,且完全兼容 utf8。utf8 速度比較快但只支援三個字元長度的字,這代表部份中文字以及 Emoji 要存入的時候會噴錯。因為 utf8 這個名字實在是太令人混淆了,很多人會誤以為它就是 UTF-8 編碼,因此後來官方也做了一些調整,將它改名為 utf8mb3,mb3 指的是用三個位元組儲存,mp4 則是用四個位元組儲存的意思。

redd 發表於 2020-4-28 14:22:20


[*]general 版本(例如 utf8mb4_general_ci),在排序時比較快,但在某些特殊情況會排錯。
[*]unicode 版本(例如 utf8mb4_unicode_ci),實作了完整的 Unicode 標準。


redd 發表於 2020-4-28 14:23:50


[*]ci 是指 case-insensitive,例如 utf8mb4_unicode_ci 是不分大小寫的
[*]cs 是指 case-sensitive,例如 utf8mb4_unicode_cs 是會區分大小寫的
[*]bin 會用 binary value 比對,例如 utf8mb4_bin 會區分大小寫的且也會區分 Ä 和 A 的不同


redd 發表於 2020-4-28 14:25:05

到了 MySQL 8.0 時, Oracle 將 utf8mb4 設為了預設編碼,也做了大幅的效能優化,變得比 utf8mb3 快很多,因此再也沒有使用舊編碼的理由了,舊編碼也被官方標為 deprecated,在未來會被移除掉。
頁: [1]
查看完整版本: MySQL 編碼