У меня есть пространственная таблица в базе данных PostgreSQL / PostGIS. Каждая строка в нем представляет полигон. Это имеет следующую форму:
+----+--------+
|gid | way |
+----+--------+
|241 | 01030..|
Геометрический столбец - это «путь», который содержит геометрию для многоугольника. В WKT это: POLYGON (('....')). Я делаю много запросов ST_Contains к этой таблице, чтобы проверить, содержатся ли два полигона друг в друге, например:
Select ST_Contains(a.way, b.way) From table AS a, table AS b Where a.gid = 15 And b.gid = 16
Мне было интересно, как ускорить этот запрос и добавил пространственный индекс на таблицу:
CREATE INDEX table_way_gist ON table USING gist(way);
Но на самом деле я не вижу ускорения. Я создаю индекс ПОСЛЕ того, как я заполнил таблицу всеми полигонами ДО того, как я выполню запросы ST_Contains. Нужно ли добавлять индекс перед заполнением таблицы? Существуют ли специальные требования к таблице для работы с индексом? Проекция (srid) геометрического пути столбца установлена в 900913.
Я использую: psql (PostgreSQL) 9.1.4 / POSTGIS = "1.5.3"