私は交差したいテーブルが2つあります。最初の表は約5,000万点を表し、2番目の表は世界のすべての国のポリゴン層です。私はそのポリゴンと交差するすべての点を取得したい。Postgresql空間クエリーが遅すぎる
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を両方持っています。パフォーマンスはまだ向上しません。私はCENTOS 6をPostgres 8.4とPostGIS 1.5で動作させています。誰かが物事をスピードアップする方法についていくつかの光を当てることができますか? 1000から10000のレコードにクエリを制限すると、結果が非常に迅速に得られます。完全な結果セットを取得しようとすると、ドラッグされます。思考?
更新:このプロセスの最初のステップとしてクエリを絞り込む必要があることがわかりました。私はこのような封筒を手に入れます
select astext(st_envelope(wkb_geometry)) as e
from world_borders
where cntry_name = 'UK'
ここで、これをクエリ全体の一部として組み込む/実行する最も効率的な方法は何ですか?
最近のリリースでは、GiSTインデックスとGINインデックスが改善されました。あなたは、新しいメジャーリリースへのアップグレードを検討したいかもしれません。 SP-GiSTが含まれているため、9.2ベータリリースで問題を試す価値があるかもしれません。 http://www.postgresql.org/docs/9.2/static/spgist-intro.html – kgrittn