Secara umum, utf8_general_ci lebih cepat dari utf8_unicode_ci , tetapi kurang tepat.
Inilah perbedaannya:
Untuk setiap set karakter Unicode, operasi yang dilakukan menggunakan collation _general_ci lebih cepat daripada yang untuk collation _unicode_ci . Sebagai contoh, perbandingan untuk collation utf8_general_ci lebih cepat, tetapi sedikit kurang benar, dibandingkan dengan perbandingan utf8_unicode_ci. Alasannya adalah utf8_unicode_ci mendukung pemetaan seperti ekspansi; yaitu, ketika satu karakter membandingkan sama dengan kombinasi karakter lain. Misalnya, dalam bahasa Jerman dan beberapa bahasa lainnya "ß" sama dengan "ss". utf8_unicode_ci juga mendukung karakter kontraksi dan diabaikan. utf8_general_ci adalah kumpulan warisan yang tidak mendukung ekspansi, kontraksi, atau karakter yang dapat diabaikan. Itu hanya dapat membuat perbandingan satu-ke-satu antara karakter.
Dikutip dari:
http://dev.mysql.com/doc/refman/5.0/id/charset-unicode-sets.html
Untuk penjelasan lebih rinci, silakan baca posting berikut dari forum MySQL:
http://forums.mysql.com/read.php?103,187048,188748
Adapun utf8_bin: Baik utf8_general_ci dan utf8_unicode_ci melakukan perbandingan case-insensitive. Dalam konstrast , utf8_bin adalah case-sensitive (di antara perbedaan lainnya), karena membandingkan nilai biner dari karakter.
utf8
, gunakanutf8mb4
sebagai ganti untuk dukungan penuh UTF-8. Mengomentari di sini karena jawaban atas pertanyaan populer ini tidak membahas ini. mathiasbynens.be/notes/mysql-utf8mb4