MySQLの照合順序における、utf8_general_ci と utf8_unicode_ci の違いとは何か。よくわからなかったのでマニュアルを紐解くと、MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 9.10.1 Unicode キャラクタセットにて、こう書かれています。
現在、utf8_unicode_ci照合順序はUnicode 照合順序アルゴリズムを部分的にのみサポートしています。中にはまだサポートされていない文字もあります。また、結合マークは完全にはサポートされていません。このことはベトナム語を中心に、ロシア内のマイノリティ言語に影響します。
utf8_unicode_ci主な特徴は、拡張をサポートしていることです。それは1つの文字が他の文字のコンビネーションと等価であると比較された場合です。例えば、ドイツ語や他の言語では、‘ß’ は‘ss’に相当します。
utf8_general_ciは拡張をサポートしないレガシー照合順序です。文字間で1対1の比較しかできません。つまり、utf8_general_ci照合順序に対する比較の方が早いが、utf8_unicode_ciに比べてわずかに正確性が劣ります。
utf8_generic_ciだとマッチする文字が増えるかもですよ、と。
例えば、以下の等式がutf8_general_ciとutf8_unicode_ciにおいて証明されます。
Ä = A
Ö = O
Ü = U照合順序間の違いはutf8_general_ciに対して有効です。
ß = s
utf8_unicode_ciにとって有効である場合:
ß = ss
実際のところ、日本語2byteの場合はどうなんでしょうか。genericで困ったという話も聞きませんが。。
参考ページ