Voici quelque chose que personne n'a encore mentionné.
Si vous convertissez le format de ligne des tables MyISAM de DYNAMIC (par défaut) en FIXED, vous pouvez augmenter les performances globales du SQL sur la table d'au moins 20%.
Conformément aux pages 71-73 de MySQL Database Design and Tuning (ISBN 0-672-32756-1), il suffit d'exécuter la commande suivante sur n'importe quelle table MyISAM :
ALTER TABLE tblname ROW_FORMAT=FIXED;
et vous obtiendrez un bon coup de pouce de performances sur vos requêtes contre cette table.
L'exemple donné dans le livre indiquait que les requêtes sur une table MyISAM à lignes dynamiques prenaient 50% de plus de temps pour s'exécuter que sur une table MyISAM à lignes fixes. Si vous prenez ensuite la table MyISAM à lignes fixes et la compressez en utilisant myisampack, la table MyISAM à lignes fixes compressée interroge 10% plus rapidement que la table MyISAM à lignes fixes non compressée.
Il y a un inconvénient majeur à cette approche - les tables MyISAM à lignes fixes sont au moins deux fois plus grandes que leurs homologues MyISAM à lignes dynamiques. Ainsi, si vous pouviez vous permettre de sacrifier de la vitesse pour de l'espace, vous devriez opter pour les tables MyISAM à lignes fixes. Ensuite, toutes les requêtes seront plus rapides sans aucun changement de structure de table supplémentaire.
Vous pourriez également exécuter la commande ALTER TABLE tblname ROW_FORMAT=FIXED; sur une table InnoDB également. Si vous le faisiez pour des tables dans les moteurs de stockage InnoDB et MyISAM, vous ne disposeriez toujours pas d'un terrain de jeu équitable. L'avantage reviendrait toujours à MyISAM. La raison est que toutes les recherches d'index non uniques doivent traverser un index non clusterisé, puis traverser l'index clusterisé pour accéder à l'identifiant de ligne. Les index MyISAM ne passent que par un seul index au maximum.
Je ne fais pas que conjecturer. Il y a environ 4 ans, j'ai personnellement pris une table de 2 Go, exécuté la commande ALTER TABLE, et l'ai agrandie à 3,7 Go. Toutes les requêtes résultantes ont en moyenne été 20% plus rapides qu'elles ne l'étaient avant de modifier le format de ligne.
Je recommande vivement de faire cela pour tous les MyISAM et InnoDB si vous souhaitez augmenter les performances et si vous ne vous souciez pas de l'augmentation de la taille des fichiers.