Ver Mensaje Individual
  #17 (permalink)  
Antiguo 13/06/2014, 12:22
Avatar de arcanisgk122
arcanisgk122
 
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 11 meses
Puntos: 28
De acuerdo Respuesta: Problema con tildes y duda sobre comillas.

APORTE:

Hay por lo menos dos diferencias importantes:

Precisión de la clasificación

utf8_unicode_ci se basa en el estándar Unicode para la clasificación, y clasifica con precisión en una amplia gama de idiomas.

utf8_general_ci se acerca mucho a corregir ordenación Unicode en muchos idiomas comunes, pero tiene una serie de imprecisiones en algunas lenguas de decisiones en inadecuado para la clasificación correcta en esos idiomas.

Rendimiento

utf8_general_ci es más rápido en las comparaciones y la clasificación, ya que tiene un montón de accesos directos relacionados con el rendimiento.

utf8_unicode_ci utiliza un algoritmo mucho más compleja de comparación que tiene como objetivo para la clasificación correcta de acuerdo en una amplia gama de idiomas. Esto hace que sea más lento para ordenar y comparar un gran número de campos.

Unicode define complejos conjuntos de reglas de cómo se deben ordenar caracteres. Estas normas deben tener en cuenta las convenciones específicas del lenguaje; no todo el mundo ordena sus personajes en lo que podríamos llamar "orden alfabético".

En cuanto a América (es decir, "europeo") lenguas van, no hay mucha diferencia entre la ordenación Unicode y la utf8_general_ci simplificado de clasificación en MySQL, pero todavía hay algunas diferencias:

Para ejemplos, el tipo de intercalación Unicode "ß" como "ss", y "Œ" como "OE", como las personas que utilizan esos personajes normalmente quieren, mientras que utf8_general_ci los clasifica como caracteres individuales (presumiblemente como "s" y "e", respectivamente ).

En idiomas no latinos, como los idiomas asiáticos o idiomas con alfabetos diferentes, puede haber muchas más diferencias entre Unicode clasificación y la clasificación utf8_general_ci simplificado. La idoneidad de utf8_general_ci dependerá en gran medida de la lengua utilizada. Para algunos idiomas, será totalmente insuficiente.

Algunos caracteres Unicode se definen como ignorable, lo que significa que no deben contar para el orden y la comparación deberá pasar al siguiente carácter en su lugar. utf8_unicode_ci maneja estas correctamente.

Lo que se debe utilizar?

Casi nunca hay ninguna razón para utilizar utf_general_ci más, ya hemos dejado atrás el punto en el que la velocidad de la CPU es lo suficientemente baja para que la diferencia de rendimiento sería importante. Su base de datos es casi seguro que estará limitada por muy otros cuellos de botella que esto hoy en día. La diferencia en el rendimiento es sólo va a ser medible en situaciones muy especializados, y si ése es usted, usted ya lo sabría. Si está experimentando una clasificación lento, en casi todos los casos va a ser un problema con su plan de índices / consulta. Cambio de la función de intercalación no debería ser prioritario en la lista de cosas para solucionar problemas.

Cuando originalmente escribí esta respuesta (hace más de 4 años) me dijo que si quería, podría usar utf8_general_ci mayor parte del tiempo, y sólo usar utf8_unicode_ci al ordenar iba a ser lo suficientemente importante como para justificar el costo de rendimiento. Sin embargo, el costo de rendimiento ya no es realmente relevante (y no puede haber sido en aquel entonces, tampoco). Es más importante para ordenar adecuadamente en el idioma de sus usuarios están utilizando.

Otra cosa voy a añadir es que incluso si usted sabe que su aplicación sólo es compatible con el idioma Inglés, que aún puede tener que lidiar con los nombres de las personas, que a menudo pueden contener caracteres que se utilizan en otros idiomas en las que es tan importante para ordenar correctamente . El uso de las normas de Unicode para todo, ayuda a darle la tranquilidad de que la gente Unicode muy inteligentes han trabajado muy duro para hacer la ordenación trabajo correctamente.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB