Ventajas de UTF8:
-
Admite la mayoría de los idiomas, incluidos los idiomas RTL como el hebreo.
-
No se necesita traducción al importar/exportar datos a componentes compatibles con UTF8 (JavaScript, Java, etc.).
Desventajas de UTF8:
-
Los caracteres que no son ASCII tardarán más en codificarse y decodificarse debido a su esquema de codificación más complejo.
-
Los caracteres que no son ASCII ocuparán más espacio, ya que pueden almacenarse usando más de 1 byte (caracteres que no están en los primeros 127 caracteres del conjunto de caracteres ASCII). Un
CHAR(10)
oVARCHAR(10)
el campo puede necesitar hasta 30 bytes para almacenar algunos caracteres UTF8. -
Intercalaciones que no sean
utf8_bin
será más lento ya que el orden de clasificación no se asignará directamente al orden de codificación de caracteres) y requerirá traducción en algunos procedimientos almacenados (ya que las variables predeterminadas sonutf8_general_ci
colación). -
Si necesita
JOIN
campos UTF8 y no UTF8, MySQL impondrá un SEVERO golpe de rendimiento Lo que serían consultas de menos de un segundo podrían llevar potencialmente minutos si los campos unidos son conjuntos de caracteres/intercalaciones diferentes.
Conclusión:
Si no necesita admitir idiomas que no sean Latin1, desea lograr el máximo rendimiento o ya tiene tablas que usan latin1
, elige latin1
.
De lo contrario, elija UTF8
.