Pregunta

Tengo un campo de tipo char(1) En mi tabla MySQL, que básicamente solo puede tener valores M o F. Su recopilación actual se establece en UT8_UNICODE_CI. Estaba pensando si debería o no cambiar la recopilación a algo más simple como el latín porque el conjunto completo de caracteres UTF8 nunca se usa, solo los caracteres M o F. ¿Eso cambiaría algo?

¿Fue útil?

Solución

Dudo que marque una diferencia medible, pero si m y f son los únicos valores posibles, entonces utf8_bin debería producir exactamente los mismos resultados que utf8_unicode_ci (o la mayoría de los otros algoritmos de recopilación para el caso). Y dado que esa recopilación hace una comparación binaria simple, seguramente será la más rápida.

Otros consejos

La recopilación es la regla que define cómo se supone que deben ordenarse los personajes. Imagine una secuencia del alfabeto: A es la primera letra y Z es la última letra (en inglés). La recopilación es la regla que dice que A es el primero y Z es último y también ayuda a definir cómo se comparan los caracteres. En resumen, la recopilación no tiene nada que ver con nada en su caso.

Lo que debe hacer es establecer ese campo en Tinyint, hasta que a MySQL se les ocurra a los tipos booleanos más adelante. De esa manera, omitirás cualquier problema de caracteres que puedan surgir en cualquier momento, aunque en tu ejemplo no son realmente lo que importa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top