方解石做全表扫描

时间:2017-11-15 14:07:05

标签: apache-calcite

我正在使用Calcite从MySql和Vertica进行查询。

运行此查询时:

statement.executeQuery(
        "SELECT a.name, b.name " +
        "FROM mysqlschema.tableA as a " +
        "INNER JOIN verticaschema.tableB as b ON a.id = b.id " +
        "WHERE a.id = 1 AND b.id = 1 "));

出于某种原因,我发现Calcite正在正确访问tableA和正确的谓词,但由于某种原因,它在第二个表上执行SELECT * FROM verticaschema.tableB

有没有一种方法可以优化它,因此Calcite也会在tableB上运行谓词b.id=1

由于

1 个答案:

答案 0 :(得分:0)

Apache Calcite有一些limitations

  

当前限制:JDBC适配器当前只推送表扫描操作;所有其他处理(过滤,连接,聚合等)都发生在Calcite中。我们的目标是尽可能减少对源系统的处理,转换语法,数据类型和内置函数。如果Calcite查询基于单个JDBC数据库中的表,原则上整个查询应该转到该数据库。如果表来自多个JDBC源,或者是JDBC和非JDBC的混合,则Calcite将使用最有效的分布式查询方法。

你应该自己实现它。