我们希望通过PostGIS存储插件使用Drill执行查询,查询为:
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并避免拆分呢?
发布于 2018-01-24 05:59:15
在内部,Drill的规划者认为这是运行查询的最佳方式,不幸的是,没有办法显式地告诉Drill不要这样做。为了使规划器的行为不同,并将ST_Crosses函数与group by和order by一起下推,我们必须进行一些代码更改。如果你想在Drill中看到这个优化,请联系邮件列表上的Drill团队。你可以找到所有的邮件列表信息here。
https://stackoverflow.com/questions/47679129
复制相似问题