2017-12-06 7 views
0

우리는 PostGIS와 저장 플러그인 드릴을 사용하여 쿼리를 실행하려는 쿼리는 다음과 같습니다 로그를 추가드릴 실행 계획을 사용자 정의하는 방법이 있습니까?

SELECT zone, count(primary_roads.id) as roads 
FROM pg.test.zones, pg.test.primary_roads 
WHERE ST_Crosses(geom_linestring, geom) 
AND zone IN ('Astoria Park', 'Red Hook', 'Douglaston') 
GROUP BY zone 
ORDER BY roads desc; 

는 우리가 실제로 무엇을 드릴 것은 두 부분으로 쿼리를 분할됩니다 않는 것을보고 드릴 :

SELECT * 
FROM "test"."primary_roads" 

그리고 당신이 볼 수 있듯이

SELECT * 
FROM "test"."zones" 
WHERE "zone" = 'Astoria Park' OR "zone" = 'Red Hook' OR "zone" = 'Douglaston' 

, 그것은 N을한다 ot는 ST_Crosses 함수와 GROUP BY 및 ORDER BY 절을 포함합니다.

그래서 전체 쿼리를 PostGIS에 전달하고 분할을 피할 수있는 방법이 있습니까?

답변

0

내부적으로 드릴의 플래너가 이것이 쿼리를 실행하는 가장 좋은 방법이라고 판단했으며, 불행히도 Drill에게이 작업을 수행하지 않도록 명시 적으로 알릴 방법이 없습니다. 플래너가 다르게 동작하도록 푸시 다운하려면 ST_Crosses이 그룹과 함께 작동하고 순서에 따라 일부 코드를 변경해야합니다. 이 최적화가 Drill에서 이루어진 것을보고 싶다면 메일 링리스트의 Drill 팀에 연락하십시오. 모든 메일 링리스트 정보 here을 찾을 수 있습니다.