Mysql
 sql >> Database >  >> RDS >> Mysql

UTF-8:Generale? Bidone? Unicode?

In generale, utf8_general_ci è più veloce di utf8_unicode_ci , ma meno corretto.

Ecco la differenza:

Per qualsiasi set di caratteri Unicode, le operazioni eseguite utilizzando le regole di confronto _general_ci sono più veloci di quelle per le regole di confronto _unicode_ci . Ad esempio, i confronti per le regole di confronto utf8_general_ci sono più veloci, ma leggermente meno corretti, rispetto a quelli per utf8_unicode_ci. La ragione di ciò è che utf8_unicode_ci supporta mappature come espansioni; cioè, quando un carattere viene confrontato come uguale a combinazioni di altri caratteri. Ad esempio, in tedesco e in altre lingue "ß" è uguale a "ss". utf8_unicode_ci supporta anche contrazioni e caratteri ignorabili. utf8_general_ci è una raccolta legacy che non supporta espansioni, contrazioni o caratteri ignorabili. Può fare solo confronti uno a uno tra i personaggi.

Citato da:http://dev.mysql. com/doc/refman/5.0/en/charset-unicode-sets.html

Per una spiegazione più dettagliata, leggi il seguente post dai forum MySQL:http:/ /forums.mysql.com/read.php?103,187048,188748

Per quanto riguarda utf8_bin:Entrambi utf8_general_ci e utf8_unicode_ci eseguire il confronto senza distinzione tra maiuscole e minuscole. Al contrario, utf8_bin fa distinzione tra maiuscole e minuscole (tra le altre differenze), perché confronta i valori binari dei caratteri.