交差させたい2つのテーブルがあります。最初のテーブルは約 5,000 万ポイントを表し、2 番目のテーブルは世界のすべての国のポリゴン レイヤーです。そのポリゴンと交差するすべてのポイントを取得したい。
SELECT d.id, d.geom
FROM export d, world_boundaries b
WHERE (b.cntry_name = 'UK')
AND d.date_inserted >= '2012-06-01'
AND d.geom && b.wkb_geometry
AND intersects(d.geom, b.wkb_geometry);
このクエリは非常に単純ですが、実行に 4 時間以上かかります。各テーブルのジオメトリ列に GIST インデックスを作成し、両方を VACUUM ANALYZE しました。まだパフォーマンスの向上はありません。Postgres 8.4 および PostGIS 1.5 で CENTOS 6 を実行しています。物事をスピードアップする方法について誰かが光を当てることができますか? クエリを 1000 ~ 10000 レコードに制限すると、非常に迅速に結果が得られます。完全な結果セットを取得しようとすると、ドラッグされます。考え?
更新: このプロセスの最初のステップとして、クエリを絞り込む必要があることがわかりました。こんな感じで封筒が届きます
select astext(st_envelope(wkb_geometry)) as e
from world_borders
where cntry_name = 'UK'
さて、これをクエリ全体の一部として含める/実行する最も効率的な方法は何ですか?