Der Unterschied zwischen ‚utf8_general_ci‘ und ‚utf8_unicode_ci‘

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.