Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Avance rapide | Suivant |
Les index sont une m�thode courante pour augmenter les performances d'une base de donn�es. Un index permet au serveur de bases de donn�es de retrouver une ligne sp�cifique bien plus rapidement que sans index. Mais les index ajoutent aussi une surcharge au syst�me de base de donn�es dans son ensemble, si bien qu'ils doivent �tre utilis�s avec discernement.
Supposons que nous ayons une table comme celle-ci:
CREATE TABLE test1 ( id integer, content varchar );
et que l'application utilise beaucoup de requ�tes de la forme
SELECT content FROM test1 WHERE id = constant;
Sans pr�paration suppl�mentaire, le syst�me devrait lire la table test1 en entier, ligne par ligne, pour trouver toutes les lignes qui correspondent. S'il y a beaucoup de lignes dans test1, et que seulement quelques lignes correspondent � la requ�te (peut-�tre m�me z�ro ou une seule), alors, clairement, la m�thode n'est pas efficace. Mais si on a indiqu� au syst�me de maintenir un index sur la colonne id, alors il peut utiliser une mani�re beaucoup plus efficace pour trouver les lignes recherch�es. Par exemple, il pourrait n'avoir � parcourir que quelques niveaux d'un arbre de recherche.
Une approche similaire est utilis�e dans la plupart des livres autres que ceux de fiction: les termes et concepts qui sont fr�quemment recherch�s par les lecteurs sont list�s par ordre alphab�tique � la fin du livre. Le lecteur qui recherche un mot particulier peut facilement parcourir l'index, puis aller directement � la page ou aux pages indiqu�e(s). De la m�me fa�on que l'auteur doit anticiper les sujets que les lecteurs risquent de rechercher, il est de la responsabilit� du programmeur de pr�voir quels index seraient avantageux.
La commande suivante permet de cr�er un index sur la colonne id dont nous parlons:
CREATE INDEX test1_id_index ON test1 (id);
Le nom test1_id_index peut �tre choisi librement, mais il est conseill� de choisir un nom qui rappelle le but de l'index.
Pour supprimer l'index, utilisez la commande DROP INDEX. Les index peuvent �tre ajout�s et enlev�s des tables � tout moment.
Une fois un index cr��, aucune intervention suppl�mentaire n'est n�cessaire: Le syst�me met � jour l'index lorsque la table est modifi�e, et utilise l'index dans les requ�tes lorsqu'il pense que c'est plus efficace qu'une lecture compl�te de la table. Il faut n�anmoins lancer la commande ANALYZE r�guli�rement pour permettre � l'optimiseur de requ�tes de prendre les bonnes d�cisions. Voyez Chapitre 13 pour comprendre quand et pourquoi l'optimiseur d�cide d'utiliser ou de ne pas utiliser un index.
Les index peuvent aussi b�n�ficier aux commandes UPDATE et DELETE qui ont des conditions de recherche. Les index peuvent de plus �tre utilis�s dans les jointures. Ainsi, un index d�fini sur une colonne qui fait partie d'une condition de jointure peut acc�l�rer significativement les requ�tes avec jointures.
Lorsqu'un index est cr��, le syst�me doit le maintenir synchronis� avec la table. Cela rend plus lourdes les op�rations de manipulation de donn�es. C'est pourquoi les index qui ne sont pas essentiels ou qui ne sont pas utilis�s du tout doivent �tre supprim�s. Notez qu'une requ�te ou une commande de manipulation de donn�es ne peut utiliser qu'un index par table au maximum.
Pr�c�dent | Sommaire | Suivant |
Constructions UNION, CASE et ARRAY | Niveau sup�rieur | Types d'index |