11.2. Types d'index

PostgreSQL propose plusieurs types d'index: B-tree, R-tree, GiST et Hash. Chaque type d'index utilise un algorithme diff�rent qui convient � un type particulier de requ�tes. Par d�faut, la commande CREATE INDEX cr�e un index de type B-tree, qui convient � la plupart des situations. Les index B-tree savent traiter les �galit�s et les recherches sur des tranches de valeurs sur les donn�es qui peuvent �tre tri�es. En particulier, l'optimiseur de requ�tes de PostgreSQL essaie d'utiliser un index B-tree lorsque une colonne index�e est utilis�e dans une comparaison qui utilise un de ces op�rateurs: <, <=, =, >=, >

L'optimiseur peut aussi utiliser un index B-tree pour des requ�tes qui utilisent les op�rateurs de recherche de motif LIKE, ILIKE, ~, et ~*, si le motif est au d�but de la cha�ne � rechercher. Par exemple: col LIKE 'foo%' ou col ~ '^foo', mais pas col LIKE '%bar'. N�anmoins, si votre serveur n'utilise pas la localisation C, il vous faudra cr�er l'index avec une classe d'op�rateur sp�ciale. Voir Section 11.6 plus bas.

Les index R-tree sont adapt�s aux requ�tes sur des donn�es spatiales. Pour cr�er un index R-tree, utilisez une commande de la forme:

CREATE INDEX name ON table USING RTREE (column);

L'optimiseur de requ�tes de PostgreSQL envisagera d'utiliser un index R-tree lorsqu'une colonne index�e fait partie d'une comparaison utilisant l'un de ces op�rateurs: <<, &<, &>, >>, @, ~=, && (R�f�rez vous � Section 9.9 pour conna�tre la signification de ces op�rateurs.)

Les index hach�s ne supportent que les simples comparaisons d'�galit�. L'optimiseur de requ�tes envisagera d'utiliser un index hach� lorsqu'une colonne index�e fait partie d'une comparaison utilisant l'op�rateur =. La commande suivante est utilis�e pour cr�er un index hach�:

CREATE INDEX name ON table USING HASH (column);

Note�: Les tests ont montr� que les index hach�s de PostgreSQL ne sont pas plus efficaces que les index B-tree, et que la taille de l'index et le temps de cr�ation d'un index hash� sont bien moins bons. Pour ces raisons, l'utilisation des index hach�s est actuellement d�courag�e.

La m�thode d'index B-tree est une impl�mentation des B-trees � haute concurrence de Lehman-Yao. La m�thode d'index R-tree impl�mente les R-tree standards en utilisant l'algorithme de d�coupage quadratique de Guttman. La m�thode d'index par hachage est une impl�mentation de l'algorithme de hachage lin�aire de Litwin. Nous ne mentionnons les algorithmes utilis�s que pour indiquer que toutes ces m�thodes d'indexation sont compl�tement dynamiques et n'ont pas besoin d'une optimisation p�riodique (au contraire, par exemple, des m�thodes de hachage statique).