有没有办法自定义Drill执行计划?

时间:2017-12-06 16:31:41

标签: apache-drill

我们想使用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并避免分裂?

1 个答案:

答案 0 :(得分:0)

内部Drill的计划者已经决定这是运行查询的最佳方式,遗憾的是没有办法明确告诉Drill不要这样做。为了使规划器的行为不同并按下 ST_Crosses 功能以及按顺序排序,我们必须进行一些代码更改。如果您希望在Drill中看到此优化,请与邮件列表上的Drill团队联系。您可以找到所有邮件列表信息here