Un index permet avant tout d'accélérer les recherches.
L'idée, c'est d'isoler une (ou plusieurs) colonnes pour faire les recherches sur un volume d'information plus faible que la table entière.
Si tu as une table avec 10 colonne et que l'une d'entre elle est indexée, cette colonne sera recopiée à part (comme si c'était une autre table avec 1 seule colonne).
Lors d'une recherche s'appliquant sur cette colonne (... WHERE colonne = 123), le SGBD va parcourir d'abord cet index pour évaluer la condition. Ainsi, il saura "rapidement" quelles lignes sont concernées sans avoir besoin de lire toute la table.
Bien sur, il devra ensuite accéder à la table pour récupérer toutes les infos de ces lignes, mais il pourra lire seulement les lignes utiles, pas toute la table
En simplifiant, disons qu'il faut indexer les colonnes pas trop grosses qui apparaissent dans les WHERE.
Du moins, les plus utilisées, faut pas non plus tout indexer
Message édité par mrbebert le 07-01-2004 à 23:27:21