В общем, 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