我们想使用Drill和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;
向Drill添加日志我们看到Drill实际上将查询拆分为两部分:
SELECT *
FROM "test"."primary_roads"
和
SELECT *
FROM "test"."zones"
WHERE "zone" = 'Astoria Park' OR "zone" = 'Red Hook' OR "zone" = 'Douglaston'
如您所见,它不包括ST_Crosses函数,也包括GROUP BY和ORDER BY子句。
那么,有没有办法可以将完整查询传递给PostGIS并避免分裂?
答案 0 :(得分:0)
内部Drill的计划者已经决定这是运行查询的最佳方式,遗憾的是没有办法明确告诉Drill不要这样做。为了使规划器的行为不同并按下 ST_Crosses 功能以及按顺序排序,我们必须进行一些代码更改。如果您希望在Drill中看到此优化,请与邮件列表上的Drill团队联系。您可以找到所有邮件列表信息here。