MySQL bietet viele verschiedene Kollationen, in welchen Datenbanken betrieben werden können. Diese bieten jeweils einen unterschiedlichen Zeichensatz und damit auch eine unterschiedliche Anzahl an zur Verfügung stehenden Zeichen an, die gespeichert werden können. Mit UTF-8 hat man hierbei einen hochstandardisierten Zeichensatz, welcher sehr viele Zeichen beinhaltet.
Doch auch hier gibt es nochmals einige Unterschiede. So gibt es z. B. utf8_general_ci
, utf8_unicode_ci
, utf8_swedish_ci
etc. Hier gibt es nochmals Unterschiede, die je nach Region, für welche die Datenbank eingesetzt werden soll, hilfreich sind. Standardmäßig ist utf8_general_ci
in Benutzung. Während dieses den UCA (Unicode Collation Algorithm, Unicode-Sortierfolgenalgorithmus) nicht unterstützt, ist er bei utf8_unicode_ci
fast vollständig implementiert, einige Zeichen ausgenommen.
Was heißt das aber nun?utf8_unicode_ci
kann mithilfe dieses Algorithmus Erweiterungen in Zeichen erkennen, so dass er z. B. ein ß korrekt mit einem ss gleichsetzt. utf8_general_ci
dagegen kann nur 1:1-Beziehungen herstellen. Für diese Kollation ist damit ß = s, ä = a, ö = o etc. Damit sind zwar die Sortierungen schneller, aber auch ungenauer.
Ein reales Beispiel:
Für utf8_general_ci
bietet der Begriff Äpfel genau dieselben Zeichen wie Apfel, d. h. es ist hier nicht möglich, konkret nach der Einzahl oder Mehrzahl dieses Begriffs zu suchen, da er als gleich erkannt wird. utf8_unicode_ci
kann hierbei jedoch eine Unterscheidung treffen.
Die Geschwindigkeitsvorteile von utf8_general_ci
sind zudem zu vernachlässigen, da sie höchstens in Benchmarks auffallen. Gerade auch in der heutigen Zeit, in der man mehr als genug Rechenkraft hat, sollte das keinen bedeutsamen Unterschied machen, der die Nachteile bei der Sortierung rechtfertigt.
Die weiteren bereits genannten Kollationen sind für spezielle Unterscheidungen je nach Land gedacht. So ist z. B. unter utf8_swedish_ci
folgender Vergleich wahr: Ü = Y < Öutf8_spanish_ci
wiederum setzt ñ als eigenen Buchstaben zwischen n und o.
Diese Kollationen sind demnach dann einzusetzen, wenn sie entsprechend benötigt werden.