|  |  
 
Vous pouvez accélerer le traitement et minimiser l'espace de stockage d'une table en utilisant les techniques suivantes :
 
Déclarez mes colonne comme NOT NULLsi possible. Cela accélère l'ensemble, et vous économisez un bit par colonneProfitez du fait que toutes les colonnes ont une valeur par défaut. Insérez les valeurs explicitement uniquement lorsque la valeur insérée diffère de la valeur par défaut. Vous n'avez ainsi pas besoin d'affecter de valeur à la première colonne de type TIMESTAMPou de typeAUTO_INCREMENTlors d'une commandeINSERT.mysql_insert_id().Utilisez autant que possible la plus petite taille d'entier. Les tables en seront réduites d'autant. Par exemple, MEDIUMINTest souvent plus efficace queINT.Si vous n'avez pas de colonne de longueur variable (VARCHAR,TEXTouBLOB), la ligne est de longueur fixe. Cela nettement plus rapide, mais cela peut gaspiller un peu de place .
  10.17  Quel sont les différents formats de lignes? Quand utiliserVARCHAR/CHAR?.Pour aider MySQL à optimisez les requêtes, utilisez isamchk --analyzesur une table, après l'avoir chargée avec les données adéquates. Cela met à jours une caractéristiques de la table, qui indique le nombre moyen de ligne qui ont la même valeur. (Pour les index uniques, cette valeur vaudra 1, bien entendu).Pour classer un index et des données en fonction d'un index, utilisez isamchk --sort-index --sort-records=1(pour trier avec l'index 1). Si vous avez un index unique dont vous voulez lire toutes lignes dans l'ordre de l'index, c'est une bonne idée pour accélèrer la requête. Remarquez bien que ce classement n'est pas optimal, et qu'il peut s'avérer long pour une grande table.Pour les commandes INSERT, utilisez des insertions multiples. C'est beaucoup plus rapide que de faire des insertions séparées.Lorsque vous chargez des données, utilisez LOAD DATA INFILE. Cette commande est généralement 20 fois plus rapide que des commandesINSERTrepétées.LOAD DATA.
Vous pouvez même gagner encore plus de vitesse en chargeant les données dans une table avec de nombreux index en utilisant la procédure suivante : 
Créez une table avec mysqlou Perl avecCREATE TABLE.Exécutez mysqladmin flush-tables.Utilisez isamchk --keys-used=0 -rq /path/to/db/nom_table. Cela va effacer tous les index de cette table.Insérez les données dans la table avec LOAD DATA INFILE.Si vous avez pack_isamet voulez compresser les tables, lancezpack_isam.Recréez les index avec isamchk -r -q /path/to/db/nom_table.Exécutez mysqladmin flush-tables. 
Pour gagner un peu de vitesse avec LOAD DATA INFILEetINSERT, agrandissez le buffer de clés. Cela peut se faire avec l'option-O key_buffer=#option demysqldousafe_mysqld. Par exemple, 16M est une bonne valeur si vous disposez de beaucoup de RAMLorsque vous créez des textes d'exportation pour les réutilisez dans d'autres programmes, utilisez SELECT ... INTO OUTFILE. Reportez vous à la sectionLOAD DATA.Lorsque vous faites des insertions ou des modifications nombreuses et successives, vous pouvez gagner de la vitesse en verrouillant la table avec LOCK TABLES.LOAD DATA INFILEetSELECT ...INTO OUTFILEsont atomique, ce qui rend inutile l'utilisation deLOCK TABLESlors de leur utilisation.LOCK TABLES. 
Pour vérifier l'état de fragmentation de vos tables, utilisez isamchk -evisur le fichier``.ISM''. Reportez vous à la section   13  Maintenance d'un serveur MySQL |