У мене є просторова таблиця в базі даних 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. Чи слід додавати індекс перед заповненням таблиці? Чи є в таблиці особливі вимоги до роботи з індексом? Проекція (сітка) шляху геометричного стовпчика встановлена на 900913.
Я використовую: psql (PostgreSQL) 9.1.4 / POSTGIS = "1.5.3"