Administrateur PHPfrance |
3088 Messages
22 mars 2008, 12:31
Apparemment, tu as un très grand nombre d'index inutiles, ainsi que des index redondants. As-tu ajouté tous ces index, où font-ils partie d'une application que tu as installé ? Auquel cas, retire tous les index que tu as rajouté toi-même. Retirer un index inutile accélère très légèrement les requêtes et économise de la place sur le disque et mémoire. Retirer un index utile n'est pas
dangereux, mais certaines requêtes deviendront plus lentes. Pour utiliser une métaphore, un index SQL c'est comme l'index d'un livre (table des matières). La plupart des livres possèdent la liste des chapîtres par ordre chronologique, ou la liste des chapître par catégorie (par exemple, Math / Chimie / Histoire). Maintenant, imagine que ton encyclopédia a 20 tables des matières différentes. À chaque fois qu'un chapitre est ajouté, il faut mettre à jour toutes les tables des matières, même celles qui ne sont jamais utilisées.
Il est impossible de dire quels index sont réellement utiles et lesquels sont inutiles sans étudier l'application qui les utilise, et il faut pas mal de temps pour faire tout ça donc je doute qu'on puisse t'aider à faire ça. Au minimum, ce que tu peux faire c'est éliminer les index redondants. Par exemple, la plupart des tables possèdent leur clé primaire en double, comme
Code : Tout sélectionner
PRIMARY KEY (address_book_id),
KEY idx_address_book_customers_id (customers_id),
KEY address_book_id (address_book_id),
...là tu vois que address_book_id est indexé 2 fois. Retire l'index non-primaire, "address_book_id". (
pas PRIMARY, celui-là est important)