Choisir le bon interclassement MySQL pour UTF-8

MySQL Pour rappel, un interclassement (ou collation en Anglais) est un ensemble de règles permettant la comparaison de caractères dans un jeu. Ce paramètre influe donc sur le résultat des tris. MySQL vous propose plusieurs interclassements pour l'UTF-8. La plupart sont spécifiques à certaines langues, comme utf8_esperanto_ci qui est prévu pour l'Esperanto. Si vous ne travaillez pas dans l'une de ces langues, comme c'est le cas pour le Français, il vous reste 3 autres options :
  • utf8_bin. Cet interclassement compare les codes des caractères. Il est donc très rapide, mais pas forcément très précis. Comme les codes des majuscules sont plus petits que ceux des minuscules (A = 65, a = 97), les enregistrements comportant du texte en majuscules se retrouveront placés avant les textes écrit en minuscules, ce qui ne correspondra pas forcément aux attentes de l'utilisateur.
  • utf8_general_ci. Cet interclassement fonctionne de façon très simple. Il supprime les accents et converti le texte en minuscules. Il est donc assez rapide.
  • utf8_unicode_ci est plus précis car il supporte les caractères multiples comme le e dans l'o. En contrepartie, il peut s'avérer un peu plus lent.
Donc à priori, pour le Français, on peut utiliser utf8_bin sur une colonne où tout le texte est soit en minuscules, soit en majuscules de façon à obtenir les meilleures performances. Si on n'est pas sur de la casse des caractères, il faut utiliser utf8_general_ci. Enfin, si vous travaillez avec plusieurs langues différentes, utf8_unicode_ci sera alors peut-être plus adapté.

Etiquettes:

Commentaires

A noter que l'interclassement le plus adapté au tri de mots en français est utf8_roman_ci, il respecte le classement des caractères accentués et des caractères liés "œ".

David, Dynamicnet

Ajouter un commentaire