【发布时间】:2015-08-26 21:41:39
【问题描述】:
我有一个这样的查询
SELECT a.column, b.column
FROM
table_a a INNER JOIN tableb_b ON
a.id= b.id
where a.anotherid = 'some condition'
它应该非常快,因为使用谓词 a.anotherid = 'some condition' 查询计划应该过滤 table_b 上的大量数据。 但是根据Vertica的文档,
WHERE 子句在 执行连接之后进行评估。它过滤 FROM 子句返回的记录,消除任何记录 不满足 WHERE 子句条件。
也就是说查询会先join再过滤,很慢,这在查询计划中也有体现
那么,有没有办法在加入之前推送过滤器? 或者有没有其他方法可以优化查询?
【问题讨论】:
-
只做 ON a.id= b.id AND a.anotherid = 'some condition'?
-
如果您查看查询,这就是现在的样子
-
我仍然看到 WHERE 子句...
-
SELECT a.column, b.column FROM table_a a INNER JOIN tableb_b ON a.id= b.id and a.anotherid = 'some condition' 仍然不起作用,: (
-
性能方面有什么不同吗?