PostgreSQL / PostGISデータベースに空間テーブルがあります。その中のすべての行はポリゴンを表します。次の形式です。
+----+--------+
|gid | way |
+----+--------+
|241 | 01030..|
幾何学的列は、ポリゴンのジオメトリを含む「ウェイ」です。WKTでは、POLYGON(( '....'))です。2つのポリゴンが相互に含まれているかどうかをテストするために、このテーブルで多くの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"