En general, utf8_general_ci es más rápido que utf8_unicode_ci, pero menos correcta.
Aquí está la diferencia:
Para cualquier conjunto de caracteres Unicode, operaciones realizadas mediante el cotejo _general_ci son más rápidos que los de la colación _unicode_ci. Por ejemplo, las comparaciones para la intercalación utf8_general_ci son más rápidas, pero ligeramente menos correctas, que las comparaciones para utf8_unicode_ci. La razón de esto es que utf8_unicode_ci admite asignaciones tales como expansiones; es decir, cuando un personaje se compara como igual a las combinaciones de otros personajes. Por ejemplo, en alemán y en otros idiomas, "ß" es igual a "ss". utf8_unicode_ci también admite contracciones y caracteres ignorables. utf8_general_ci es una clasificación heredada que no admite expansiones, contracciones o caracteres ignorables. Solo puede hacer comparaciones uno a uno entre los personajes.
Citado de: http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
Para una explicación más detallada, por favor lea el siguiente post de los foros de MySQL: http://forums.mysql.com/read.php?103,187048,188748
En cuanto a utf8_bin: Tanto utf8_general_ci y utf8_unicode_ci realizar caso -Comprensión insensible. En contraste, utf8_bin distingue entre mayúsculas y minúsculas (entre otras diferencias), porque compara los valores binarios de los caracteres.
Nota al margen pero en lugar de 'utf8', use' utf8mb4' en su lugar para soporte completo UTF-8. Comenta aquí porque las respuestas a esta pregunta popular no abordan esto. https://mathiasbynens.be/notes/mysql-utf8mb4 –
Si desea doblar caso, pero la sensibilidad de acento, por favor presente una solicitud en http://bugs.mysql.com. –
O haga clic en "Me afecta" en https://bugs.mysql.com/bug.php?id=58797 y agregue un comentario. –