De la documents - Limites du nombre de colonnes et de la taille des lignes des tableaux :
Chaque table (quel que soit le moteur de stockage) a une taille de ligne maximale de 65 535 octets. Les moteurs de stockage peuvent imposer des contraintes supplémentaires à cette limite, réduisant ainsi la taille maximale effective des lignes.
La taille maximale des lignes limite le nombre (et éventuellement la taille) des colonnes, car la longueur totale de toutes les colonnes ne peut pas dépasser cette taille. Par exemple, les caractères utf8 nécessitent jusqu'à trois octets par caractère, donc pour une colonne CHAR(255) CHARACTER SET utf8, le serveur doit allouer 255 × 3 = 765 octets par valeur. Par conséquent, une table ne peut pas contenir plus de 65 535 / 765 = 85 colonnes de ce type.
Le stockage des colonnes de longueur variable comprend des octets de longueur, qui sont évalués par rapport à la taille de la ligne. Par exemple, une colonne VARCHAR(255) CHARACTER SET utf8 nécessite deux octets pour stocker la longueur de la valeur, de sorte que chaque valeur peut prendre jusqu'à 767 octets.
Ainsi, en définissant un seul VARCHAR(65535)
vous limite effectivement à une colonne une seule colonne sur la ligne (en supposant que vous l'ayez remplie).
Tout cela mis à part le fait qu'une taille aussi grande n'est pas du tout adaptée à certains types de données - si vous avez une colonne de numéros de téléphone qui peut contenir des numéros locaux et internationaux, vous pouvez choisir d'utiliser une taille de VARCHAR
de le faire, mais le fixer à une valeur supérieure à 20 pourrait bien ne pas avoir de sens (je suis généreux).
Voir cette réponse de Bill Karwin, qui indique également que les performances peuvent être affectées si des tables temporaires sont générées avec des fichiers inutilement longs. VARCHAR
(en raison de la conversion de ces champs en format CHAR
et inversement - voir le billet pour plus de détails).