3.4. Comment rendre plus rapide des requêtes spatiale sur de grandes tables ?


Les requêtes rapides sur de grandes tables sont la raison d'être des bases de données spatiales (transactionnelles) donc avoir un bon index est primordial.

Pour construire vos index spatiaux sur les tables qui ont un colonne géométrique, utilisez la fonction CREATE INDEX de la manière suivante :

CREATE INDEX [nom_de_index] ON [nom_de_la_table]
USING GIST ( [colonne_géométrique] );

L'option USING GIST signifie que le serveur doit utiliser un index GiST (Generalized Search Tree, en d'autres termes : un arbre de recherche généralisé).

Les index GiST sont supposés à perte. Les index à perte utilisent un objet par procuration (dans le cas spatial, le cadre limite) pour construire l'index.

Vous devriez aussi vous assurer que le planificateur de requête de PostgreSQL a suffisamment d'informations concernant votre index pour prendre une décision rationnelle quant à son utilisation. Pour ce faire, vous devez rassembler les statistiques de vos tables géométriques.

Pour PostgreSQL 8.0.x et supérieur, lancez simplement la commande VACUUM ANALYZE

Pour PostgreSQL 7.4.x et précédant, lancez la commande : SELECT UPDATE_GEOMETRY_STATS().