Ich habe eine räumliche Tabelle in einer PostgreSQL / PostGIS-Datenbank. Jede Zeile repräsentiert ein Polygon. Es hat folgende Form:
+----+--------+
|gid | way |
+----+--------+
|241 | 01030..|
Die geometrische Spalte ist "Weg", der die Geometrie für ein Polygon enthält. In WKT heißt es: POLYGON (('....')). Ich führe viele ST_Contains-Abfragen in dieser Tabelle durch, um zu testen, ob zwei Polygone ineinander enthalten sind, z.
Select ST_Contains(a.way, b.way) From table AS a, table AS b Where a.gid = 15 And b.gid = 16
Ich habe mich gefragt, wie ich diese Abfrage beschleunigen kann, und der Tabelle einen räumlichen Index hinzugefügt:
CREATE INDEX table_way_gist ON table USING gist(way);
Aber eigentlich sehe ich keine Beschleunigung. Ich erstelle den Index, nachdem ich die Tabelle mit allen Polygonen gefüllt habe, bevor ich die ST_Contains-Abfragen durchführe. Sollte der Index hinzugefügt werden, bevor eine Tabelle gefüllt wird? Gibt es spezielle Anforderungen an die Tabelle, um mit dem Index zu arbeiten? Die Projektion (srid) des geometrischen Säulenwegs ist auf 900913 eingestellt.
Ich verwende: psql (PostgreSQL) 9.1.4 / POSTGIS = "1.5.3"