文档首页 > > 开发指南> 优化查询性能> 实际调优案例> 案例:选择合适的分布列

案例:选择合适的分布列

分享
更新时间: 2019/06/24 GMT+08:00

现象描述

表定义如下:

CREATE TABLE t1 (a int, b int);
CREATE TABLE t2 (a int, b int);

执行如下查询:

SELECT * FROM t1, t2 WHERE t1.a = t2.b;

优化分析

如果将a作为t1和t2的分布列:

CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a);
CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (a);

则执行计划将存在“Streaming”,导致DN之间存在较大通信数据量,如图1所示。

图1 选择合适的分布列案例(一)

如果将a作为t1的分布列,将b作为t2的分布列:

CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a);
CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (b);

则执行计划将不包含“Streaming”,减少DN之间存在的通信数据量,从而提升查询性能,如图2所示。

图2 选择合适的分布列案例(二)
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区