J'ai une table spatiale dans une base de données PostgreSQL / PostGIS. Chaque ligne représente un polygone. Il se présente sous la forme suivante:
+----+--------+
|gid | way |
+----+--------+
|241 | 01030..|
La colonne géométrique est "way" qui contient la géométrie d'un polygone. En WKT c'est: POLYGON (('....')). Je fais beaucoup de requêtes ST_Contains sur cette table, pour tester si deux polygones sont contenus l'un dans l'autre, par exemple:
Select ST_Contains(a.way, b.way) From table AS a, table AS b Where a.gid = 15 And b.gid = 16
Je me demandais comment accélérer cette requête et ajouté un index spatial sur la table:
CREATE INDEX table_way_gist ON table USING gist(way);
Mais en fait, je ne vois pas d'accélération. Je crée l'index APRÈS avoir rempli la table avec tous les polygones AVANT de faire les requêtes ST_Contains. Faut-il ajouter l'index avant de remplir un tableau? Y a-t-il des exigences spéciales sur la table pour travailler avec l'index? La projection (srid) de la voie de la colonne géométrique est définie sur 900913.
J'utilise: psql (PostgreSQL) 9.1.4 / POSTGIS = "1.5.3"