un champ char(x) prends x octets en mémoire, quoi que tu y mettes... Si tu mets "machin" dans un champs char(100) ça prend 100 octets!
Un champ varchar(x) prends juste ce qu'il faut + quelques octets en fonction de l'implémentation du sgbd..! Si tu mets "machin" dans un varchar(100) ça prend 6 + n octets! "n" dépend de la façon dont ce type de champ est géré! C'est variable... En général c'est entre 2 et 8...
En pratique, si tu sais que ton champ contiendra des textes de longueurs quasiment identiques, opte pour un char! Et si ça varie beaucoup, go varchar!

