Nói chung, utf8_general_ci nhanh hơn utf8_unicode_ci , nhưng ít chính xác hơn.
Đây là sự khác biệt:
Đối với bất kỳ bộ ký tự Unicode nào, các thao tác được thực hiện bằng cách đối chiếu _general_ci sẽ nhanh hơn các thao tác đối với đối chiếu _unicode_ci . Ví dụ, so sánh cho đối chiếu utf8_general_ci nhanh hơn, nhưng ít chính xác hơn so với so sánh cho utf8_unicode_ci. Lý do cho điều này là utf8_unicode_ci hỗ trợ ánh xạ như mở rộng; nghĩa là, khi một nhân vật so sánh bằng với sự kết hợp của các nhân vật khác. Ví dụ, trong tiếng Đức và một số ngôn ngữ khác, Tiếng ß là bằng với ss ss. utf8_unicode_ci cũng hỗ trợ các cơn co thắt và các ký tự không thể biết được. utf8_general_ci là một đối chiếu kế thừa không hỗ trợ các bản mở rộng, các cơn co thắt hoặc các ký tự không thể biết được. Nó chỉ có thể thực hiện so sánh một-một giữa các nhân vật.
Trích dẫn từ:
http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
Để được giải thích chi tiết hơn, vui lòng đọc bài viết sau từ các diễn đàn MySQL:
http://forums.mysql.com/read.php?103,187048,188748
Đối với utf8_bin: Cả utf8_general_ci và utf8_unicode_ci đều thực hiện so sánh không phân biệt chữ hoa chữ thường. Trong constrast, utf8_bin phân biệt chữ hoa chữ thường (trong số các khác biệt khác), vì nó so sánh các giá trị nhị phân của các ký tự.
utf8
sử dụngutf8mb4
thay thế cho hỗ trợ UTF-8 đầy đủ. Bình luận ở đây vì câu trả lời cho câu hỏi phổ biến này không giải quyết điều này. mathiasbynens.be/notes/mysql-utf8mb4