![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
escartefigue
Pour ma part, en deçà d'une vingtaine de caractères, je n'utilise pas le varchar
Le fait qu'il y ait un seuil à partir du quel il faille procéder à des tests, nous est commun.
La conversation porte sur la valeur du seuil.
Pour prouver que c'est effectivement "rentable" de rester en CHAR, il faudrait faire des tests de perfs pour chaque colonne (et, idéalement, de bout en bout pour prendre en compte le poids du protocole qui permet de transformer le SET en un flux)
J'avoue que je ne le fait que très rarement.
Le problème que ça me pose est que l'audit se fait sur des données réelles, ne serait-ce pour pouvoir calculer la distribution des différentes longueurs de chaine.
Alors même que le concepteur implémente le type sur des présupposés.
C'est facile de corriger a posteriori !
Exemple : les codes barre (https://fr.wikipedia.org/wiki/Code-barres_EAN)
Si on exclue le code barre 128 et les add-on de l'EAN13(rare), faut-il faire un char(13) ou un varchar(13) ?
A noter : cet exemple invalide l'hypothèse de la fragmentation suite à une mise à jour ; on ne met pas/peu à jour un code barre pour en changer de norme, on crée alors un nouvel article.
Pour moi, tout dépend de l'usage effectif. On peut tout à fait imaginer qu'il n'y ait que très peu de EAN13 pour une écrasante majorité de EAN8, disons moins de 50 pour plus de 900 000 articles.
Intuitivement (donc sans avoir fait les tests) je penche pour un varchar dans cette situation.
Aussi courte soit elle, au delà de 4 caractères, je fais une analyse de la situation.
Partager