我有兩個表,我想要相交。第一張表格大約有5000萬分,第二張表是世界上所有國家的多邊形層。我想獲得與該多邊形相交的所有點。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。仍然沒有性能提高。我使用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'
現在的信封,什麼是最有效的方式,包括/執行這是全體查詢的一部分?
最近的每個版本都改進了GiST和GIN索引。您可能需要考慮升級到新的主要版本。它甚至可能值得在9.2 beta版本上嘗試你的問題,因爲它包含了SP-GiST。 http://www.postgresql.org/docs/9.2/static/spgist-intro.html – kgrittn