Frage

Ich habe ein Feld vom Typ char(1) In meiner MySQL -Tabelle, die im Grunde nur Werte m oder f haben kann. Die aktuelle Zusammenfassung ist auf UT8_unicode_ci gesetzt. Ich dachte, ob ich die Zusammenfassung in etwas Einfacheres wie Latein ändern sollte oder nicht, da der gesamte Satz von UTF8 -Zeichen nie verwendet wird - nur die Chars M oder F. Würde das etwas ändern?

War es hilfreich?

Lösung

Ich bezweifle, dass es einen messbaren Unterschied machen wird, aber wenn m und f sind dann die einzigen möglichen Werte utf8_bin sollte produzieren exakt die gleichen Ergebnisse wie utf8_unicode_ci (oder die meisten anderen Konsumalgorithmen). Und da diese Zusammenstellung einen einfachen binären Vergleich durchführt, ist sie zwangsläufig das schnellste.

Andere Tipps

Zusammenfassung ist die Regel, die definiert, wie die Charaktere geordnet werden sollen. Stellen Sie sich eine Alphabet -Sequenz vor - a ist 1. Buchstabe und Z ist der letzte Brief (in Englisch). Zusammenstellung ist die Regel, die das sagt A ist an erster und Z ist zuletzt und hilft auch, zu definieren, wie Charaktere verglichen werden. Kurz gesagt - Zusammenfassung hat in Ihrem Fall nichts mit irgendetwas zu tun.

Was Sie tun sollten, ist, dieses Feld auf Tinyint zu setzen, bis MySQL später mit Booleschen Typen kommt. Auf diese Weise werden Sie alle Charset -Probleme umgehen, die zu jedem Zeitpunkt auftreten könnten, obwohl sie in Ihrem Beispiel nicht wirklich darauf ankommt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top