JOIN 查询
通常,可以通过以下几种方式优化联接多个表的查询的执行:
-
为按联接谓词列排序的联接表创建投影。这有助于使用合并联接算法,该算法通常比哈希联接算法更高效地联接表。
其他最佳实践
如果满足以下条件,Vertica 还会更高效地执行联接:
-
查询构造使查询优化器能够创建计划,其中较大的表被定义为外部输入。
-
等式谓词两边的列来自同一个表。例如,在以下查询中,等式谓词的左侧和右侧分别仅包含表 T 和 X 中的列:
=> SELECT * FROM T JOIN X ON T.a + T.b = X.x1 - X.x2;
相反,以下查询需要处理更多工作,因为谓词的右侧包含表 T 和 X 中的列:
=> SELECT * FROM T JOIN X WHERE T.a = X.x1 + T.b