Mam tabelę przestrzenną w bazie danych PostgreSQL / PostGIS. Każdy wiersz w nim reprezentuje wielokąt. Ma on następującą formę:
+----+--------+
|gid | way |
+----+--------+
|241 | 01030..|
Kolumna geometryczna to „droga”, która zawiera geometrię wielokąta. W WKT jest to: POLYGON ((„....”)). Robię dużo zapytań ST_Contains na tej tabeli, aby sprawdzić, czy dwa wielokąty są w sobie zawarte, np .:
Select ST_Contains(a.way, b.way) From table AS a, table AS b Where a.gid = 15 And b.gid = 16
Zastanawiałem się, jak przyspieszyć to zapytanie i dodałem indeks przestrzenny do tabeli:
CREATE INDEX table_way_gist ON table USING gist(way);
Ale tak naprawdę nie widzę przyspieszenia. Indeks tworzę PO wypełnieniu tabeli wszystkimi wielokątami PRZED wykonaniem zapytań ST_Contains. Czy indeks należy dodać przed wypełnieniem tabeli? Czy są jakieś specjalne wymagania dotyczące pracy z indeksem? Rzut (srid) geometrycznej kolumny jest ustawiony na 900913.
Używam: psql (PostgreSQL) 9.1.4 / POSTGIS = „1.5.3”