Pour répondre à la question, sur le disque, MySql utilise 1 + la taille utilisée dans le champ pour stocker les données (donc si la colonne était déclarée varchar(45) et que le champ était "FooBar", il utiliserait 7 octets sur le disque, à moins bien sûr que vous utilisiez un jeu de caractères multi-octets, où il utiliserait 14 octets). Ainsi, quelle que soit la façon dont vous déclarez vos colonnes, cela ne fera aucune différence du côté du stockage (vous avez déclaré que vous vous inquiétiez de l'optimisation du disque pour une table massive). Cependant, cela fait une différence dans les requêtes, car les VARCHAR sont convertis en CHAR lorsque MySql crée une table temporaire (SORT, ORDER, etc.) et plus vous pouvez insérer d'enregistrements dans une seule page, moins de mémoire et plus rapidement vos analyses de table seront être.