Postgis 2.0 새로운 함수 <-> (Geometry Distance Centroid)를 사용하여 테이블의 각 행 (cosn1)에 대해 동일한 클래스의 가장 가까운 다각형까지의 거리를 계산하려고합니다.
다음 코드를 사용하려고했습니다.
WITH index_query AS (
SELECT g1.gid As ref_gid, ST_Distance(g1.the_geom,g2.the_geom) As ENN
FROM "cosn1" As g1, "cosn1" As g2
WHERE g1.gid <> g2.gid AND g1.class = g2.class
ORDER BY g1.gid, g1.the_geom <-> g2.the_geom)
SELECT DISTINCT ON (ref_gid) ref_gid, ENN
FROM index_query
ORDER BY ref_gid, ENN;
그러나 나는 경고를 깨달았다.
참고 : 지오메트리 중 하나가 상수 (하위 쿼리 / cte가 아닌) 인 경우에만 인덱스가 시작됩니다. 예 : a.geom 대신 'SRID = 3005; POINT (1011102 450541)':: geometry
인덱스가 전혀 사용되지 않으며 쿼리를 사용하기 전과 거의 동일한 시간이 소요됩니다.
SELECT DISTINCT ON(g1.gid) g1.gid As ref_gid, ST_Distance(g1.the_geom,g2.the_geom) As ENN
FROM "cosn1" As g1, "cosn1" As g2
WHERE g1.gid <> g2.gid AND g1.class = g2.class
ORDER BY g1.gid, ST_Distance(g1.the_geom,g2.the_geom)
누구든지 내 쿼리 성능을 향상시킬 수있는 해결 방법을 알려 줄 수 있습니까?
대단히 감사합니다.