La différence vraiment uniquement les questions pour MyISAM, d'autres moteurs de stockage ne se soucient pas de la différence.
Avec MyISAM avec une largeur fixe de lignes, il y a quelques avantages:
Aucune ligne de fragmentation: Il est possible avec la variable de la largeur des lignes pour obtenir des lignes simples divisé en plusieurs sections à travers le fichier de données. Cela peut augmenter disque cherche et ralentir les opérations. Il est possible de défragmenter avec OPTIMIZE TABLE, mais ce n'est pas toujours pratique.
Fichier de données de la taille du pointeur: En MyISAM, il y a une notion de pointeur de fichier qui est utilisé lorsqu'il doit faire référence au fichier de données. Par exemple, il est utilisé dans les index quand ils se réfèrent à l'endroit où la ligne est réellement présent. Avec une largeur fixe de tailles, ce pointeur est basée sur le décalage de lignes dans le fichier (c'est à dire. les lignes sont 1, 2, 3, indépendamment de leur taille). Avec une largeur variable, le pointeur est basé sur le décalage d'octet (ie. les lignes peuvent être de 1, 57, 163). Le résultat est que, avec de grandes tables, le pointeur doit être plus grand, ce qui ajoute ensuite potentiellement beaucoup plus de surcharge de la table.
Plus facile à résoudre dans le cas de la corruption. Depuis, chaque ligne est de la même taille, si votre table MyISAM est corrompu, il est beaucoup plus facile à réparer, de sorte que vous ne perdez des données qui est réellement corrompu. Avec une largeur variable, en théorie, il est possible que la largeur variable des pointeurs se foiré, ce qui peut entraîner de la tuyauterie de données dans une mauvaise voie.
Maintenant, le principal inconvénient de largeur fixe, c'est qu'il gaspille plus d'espace. Par exemple, vous devez utiliser le CHAR des champs plutôt que des champs VARCHAR, si vous vous retrouvez avec de l'espace supplémentaire pris.
Normalement, vous n'aurez pas beaucoup de choix dans le format, puisqu'il est imposé sur le schéma. Toutefois, il pourrait être utile si vous avez seulement un peu de type varchar ou un seul blob/text pour essayer de l'optimiser dans cette direction. Par exemple, envisager de passer la seule varchar dans un char, ou diviser le blob dans une table.
Vous pouvez lire plus sur ce à:
http://dev.mysql.com/doc/refman/5.0/en/static-format.html
http://dev.mysql.com/doc/refman/5.0/en/dynamic-format.html