Загалом, utf8_general_ci швидше, ніж utf8_unicode_ci , але менш правильне.
Ось різниця:
Для будь-якого набору символів Unicode операції, виконані за допомогою зіставлення _general_ci, швидше, ніж операції для порівняння _unicode_ci . Наприклад, порівняння для порівняння utf8_general_ci є більш швидким, але трохи менш правильним, ніж порівняння для utf8_unicode_ci. Причиною цього є те, що utf8_unicode_ci підтримує відображення, наприклад розширення; тобто коли один символ порівнюється як рівний комбінаціям інших символів. Наприклад, у німецькій та деяких інших мовах "ß" дорівнює "ss". utf8_unicode_ci також підтримує скорочення та ігнорувані символи. utf8_general_ci - це застаріле зіставлення, яке не підтримує розширення, скорочення чи ігноровані символи. Він може лише порівнювати персонажів один на один.
Цитується з:
http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
Для більш детального пояснення, будь ласка, прочитайте наступне повідомлення з форумів MySQL:
http://forums.mysql.com/read.php?103,187048,188748
Що стосується utf8_bin: і utf8_general_ci, і utf8_unicode_ci виконують порівняння з урахуванням регістру. За обмеженням , utf8_bin чутливий до регістру (серед інших відмінностей), оскільки порівнює двійкові значення символів.
utf8
, використовуйтеutf8mb4
замість неї повну підтримку UTF-8. Коментуючи тут, оскільки відповіді на це популярне питання цього не стосуються. mathiasbynens.be/notes/mysql-utf8mb4