두 개의 테이블을 교차시키고 싶습니다. 첫 번째 표는 약 5 천만 점을 나타내고 두 번째 표는 전 세계 모든 국가의 다각형 층입니다. 그 다각형과 교차하는 모든 점을 얻고 싶습니다.Postgresql Spatial Query가 너무 느립니다.
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