Ogólnie utf8_general_ci jest szybszy niż utf8_unicode_ci , ale mniej poprawne.
Oto różnica:
W przypadku dowolnego zestawu znaków Unicode operacje wykonywane przy użyciu sortowania _general_ci są szybsze niż operacje wykonywane w przypadku sortowania _unicode_ci . Na przykład porównania dla sortowania utf8_general_ci są szybsze, ale nieco mniej poprawne niż porównania dla utf8_unicode_ci. Powodem tego jest to, że utf8_unicode_ci obsługuje mapowania, takie jak rozszerzenia; to znaczy, gdy jeden znak jest porównywany z kombinacjami innych znaków. Na przykład w języku niemieckim i niektórych innych językach „ß” jest równe „ss”. utf8_unicode_ci obsługuje również skróty i ignorowane znaki. utf8_general_ci to starsze zestawienie, które nie obsługuje rozwinięć, skurczów ani znaków, które można zignorować. Może dokonywać tylko porównań jeden-do-jednego między postaciami.
Cytat z:http://dev.mysql. com/doc/refman/5.0/en/charset-unicode-sets.html
Aby uzyskać bardziej szczegółowe wyjaśnienie, przeczytaj następujący post na forach MySQL:http:/ /forums.mysql.com/read.php?103,187048,188748
Co do utf8_bin:Oba utf8_general_ci i utf8_unicode_ci wykonaj porównanie bez rozróżniania wielkości liter. Dla kontrastu utf8_bin rozróżnia wielkość liter (między innymi), ponieważ porównuje wartości binarne znaków.