Version complète: sur le forum Webmaster Hub : Indexer des colonnes de MySQL
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
Yhann
Bonjour,

Dans phpMyAdmin, je me suis rendu compte que lorsque je créé une table, et que je définis des index sur plusieurs champs, ils apparaissent comme regroupés.

C'est à dire que si j'exporte la structure de la table, j'obtiens une ligne comme :

CODE
KEY `page_id` (`page_id`,`zone_id`,`module`,`module_id`,`publie`)


Alors que si je définis mes index après la création de la table, j'obtiens, en exportant la structure de la table :

CODE
KEY `page_id` (`page_id`),
KEY `zone_id` (`zone_id`),
KEY `module` (`module`),
KEY `module_id` (`module_id`),
KEY `publie` (`publie`)


Quelle différence ? Est-ce la même chose ? Si ce n'est pas la même chose, quand faut-il utiliser l'une plutôt que l'autre de ces solutions ?
Pouvez-vous donner un exemple précis pour que je puisse bien comprendre ?

Merci smile.gif
Kioob
Hello,

ce n'est pas du tout la même chose non.
MySQL va généralement utiliser un seul index par clause/jointure.

Si tu fais une requete avec deux clauses de ce genre :
CODE
where page_id = 18 and zone_id = 20

Si tu as l'index groupé, MySQL pourra s'en servir pour rechercher directement page_id + zone_id.

Sinon, il utilisera au choix l'index sur page_id ou zone_id, mais pas les deux en même temps.


Par contre si tu as une requete avec uniquement cette clause :
CODE
where module = 'toto'

MySQL sera incapable d'utiliser l'index groupé, car l'ordre de l'index groupé est important : il aurait fallu que la clause ait des critères sur page_id et zone_id également.

Pour savoir quand utiliser quoi, cela dépend essentiellement de tes requêtes.
Yhann
Salut Kioob,

Ton explication est très claire.
Des années que j'utilise des bases mySQL sans avoir connaissance de ce point.
Du coup, je vais pouvoir procéder à des optimisations...

Encore merci pour ta réponse.
Bonne fin de journée.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.