나는 이것이 암시 적이라고 생각하지만, 대신 사용할 수있는 비 공간 인덱스가있을 때 쿼리에 공간 인덱스를 사용 하지 않을 것입니다. 예를 들어, 미국에 걸쳐 2,113,450 개의 점이 테이블에로드되어 있습니다. 알래스카 주 내의 모든 포인트를 가져 오려면 포인트 지오메트리에서 GIST 인덱스를 사용하여 알래스카 주 지오메트리와 비교 한 공간 쿼리를 수행하거나 OR을 사용할 수 있습니다. "state_alpha"= 'AK'인 모든 포인트를 반환하기 위해 포인트 데이터의 "state_alpha"필드 (인덱싱 됨)
"이것의 공간 부분은 어디에 있습니까?" 글쎄, 수집 한 후 Alaska_points에 대한 추가 공간 분석을 수행해야하는 경우 비 공간 쿼리를 사용하여 해당 포인트 형상을 수집하는 것이 더 빠릅니다. 또한 실제로 큰 데이터 세트의 경우 조회 필드 (또는 테이블)를 추가하면 이점이 있습니다. 다시 말하지만, 이것은 아마도 모든 사람들에게 명백 할 것이라는 것을 알고 있습니다. 과거에는 공간적으로 만 인덱스 된 전역 데이터 세트와 공통 쿼리가 "국가의 모든 기능"인 전역 데이터 세트에서 발생했기 때문에 언급했습니다. 인덱스 country_fips 필드를 추가하여 많은 성능을 얻었습니다.
아래는 EXPLAIN ANALYZE의 결과를 보여주는 몇 가지 결과입니다. (참고 : BBOX 쿼리를 사용하여 공간 쿼리를 최대한 효율적으로 만들려고했습니다. 상태 개요를 사용하면 속도가 느려졌습니다.)
# explain analyze select count(*) from gnis_names where state_alpha = 'AK';
Aggregate (cost=57359.45..57359.46 rows=1 width=0) (actual time=76.606.. 76.607 rows=1 loops=1)
<snip>
Total runtime: 76.676 ms
# explain analyze select count(*) from gnis_names where the_geom && GeomFromText('POLYGON((-179.14734 51.219862,-179.14734 71.3525606439998,179.77847 71.3525606439998,179.77847 51.219862,-179.14734 51.219862))',4326);
Aggregate (cost=27699.86..27699.87 rows=1 width=0) (actual time=86.523..86.524 rows=1 loops=1)
<snip>
Total runtime: 86.584 ms