Mes Char deviennent Varchar

Eléphanteau du PHP | 35 Messages

16 mars 2007, 19:40

Bonjour,

Sur l'une de mes tables, j'avais optimisé toutes mes colonnes avec chaine en "Char" et un peu plus tard j'ai rajouté une colonne et toutes mes colonnes Char ce sont changées en Varchar.

Quelqu'un aurait-il un explication ?

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 mars 2007, 01:28


Payfu,

il existe plusieurs dizaines de SGBD différents, ce serait beaucoup plus facile de t'aider si tu nous indiquais lequel tu utilises et en quelle version...

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 mars 2007, 01:32

Ceci étant dit, je suppose que tu utilises MySQL, et il suffit donc comme souvent d'aller voir dans la documentation :

1.4.1. Les types CHAR et VARCHAR
(attention il faut chercher un peu, ce n'est pas complètement directement sur cette page)

Tu dis que tu as optimisé en utilisant Char à la place de Varchar, moi je dirais plutôt que c'est l'inverse qu'il faudrait faire

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mars 2007, 01:55

Tu dis que tu as optimisé en utilisant Char à la place de Varchar, moi je dirais plutôt que c'est l'inverse qu'il faudrait faire
Tout dépend de leur contenu... Si la chaine a toujours une taille fixe ou variant peu, le traitement d'un char est beaucoup plus rapide que celui d'un varchar.
Typiquement pour un booléen que l'on enregistre sous forme texte (genre 'T'/'F' ou 'O'/'N') et pas numérique (0/1), le type char est beaucoup plus efficace que varchar :)

En revanche tu as tout à fait raison pour une chaine dont la longueur est variable, il vaut mieux utiliser le varchar
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 3607 Messages

17 mars 2007, 11:39

ou alors pour un hash md5 par exemple, on fera un char(32)...

Eléphanteau du PHP | 35 Messages

17 mars 2007, 11:42

Merci à tous pour vos contributions, j'y vois plus clair maintenant ! :D