云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

微软云_华为云服务器登录_代金券

小七 141 0

我在另一篇关于优化联接列的文章中引用了这个示例。请看另一篇文章,以便更好地理解本例的上下文

在本例中,我们将演示option Optimize Join Columns的使用如何影响查询处理。示例使用了两个表。

示例中使用的数据

下面的语句将创建相应的表并用数据填充它们:

创建示例计算视图以防止连接修剪,因此不会发生连接列修剪

计算视图现在应如下面的屏幕截图所示:

4。添加一个Join节点,连接到两个聚合节点

5。将"item"列上的表"itemsMD"与左外部联接连接起来。使用聚合节点作为左加入伙伴

6。保持基数设置为n..m并标记"优化联接列"

视图应如下面的屏幕截图所示:

7。将表"itemsMD"

8中除"item"列以外的所有列映射到输出。在最顶端的聚合中,将所有列映射到输出

9。在节点语义中,将"amount"列的聚合类型改为"SUM"(参见下面的屏幕截图)

10。尝试构建视图。您将收到一条错误消息,告诉您在使用"优化联接列"设置时需要N:1或1:1的基数设置。这将告诉您优化联接列标志的所有先决条件都没有满足。

更改视图以便可以进行联接修剪和优化联接列

的基数设置"n..m"防止发生连接修剪。因此,大数据的解决方案,"optimizejoin Columns"标志变得无关紧要。要成功构建模型,可以取消标记"optimizejoin Columns"或将基数设置为"n..1"。我们想演示"optimizejoincolumns"选项的工作原理,因此,将连接基数更改为"n..1"(比较下面的屏幕截图)。作为最佳实践,请检查此基数是否确实存在于数据中,并且右表中的联接列"item"的匹配条目从不超过一个。在实际场景中,您希望通过一些底层加载逻辑来保证这一点。

构建视图。

运行以下查询,悠哉返利机器人,只请求表"salesItem"中的字段,因此,连接修剪和优化连接列将是有效的:

更改视图并取消标记优化连接列

取消标记"优化连接列"(见下面的屏幕截图)

构建视图并从上面运行相同的SQL查询。结果看起来会有所不同:

正如您所见,"Donald"的"amount"根据是否设置了optimizejoin columns标志而有所不同。原因是,在第一次查询中,联接字段"item"被删去,因为满足了上述前提条件:

对联接列"item"的删减更改了聚合节点中定义的最大计算的聚合粒度。为了更清楚地理解价值观为什么会改变,让我们从"调试此视图"模式开始上面的查询。

当"优化联接列"未选中时使用"调试此视图"

开始"调试此视图"并从上面输入查询(见下面的屏幕截图):

当执行调试查询(右绿色箭头)时,您应该看到下面的屏幕截图:

您可以请确保连接节点变灰。这表示发生了连接修剪。如果查看较低聚合节点的调试查询,您将看到请求了列"item",即使列"item"没有出现在最终用户查询中。在那里执行调试查询,查看该节点的中间值:

使用"优化连接列"时使用"调试此视图"

选中"优化连接列",构建视图并运行相同的调试会话。您现在应该看到下面的截图:

再次看到连接修剪发生。重要的是,在较低聚合节点的调试查询中不请求此时间列"item"。这表明选择"优化联接列"排除了处理早期的联接列"项"。

在下聚合节点运行调试查询,查看以下中间值:

根据下聚合节点的中间值计算最大值。如果未选择"优化联接列",则列"item"将保留在聚合粒度中,网云服务器,并且将对Donald(item 001和002)的两个记录进行最大计算,导致max(10)+max(50)=60(比较中间值的先前屏幕截图)。求和源于在语义节点中选择聚合模式"SUM"。相反,当选择"优化联接列"时,仅为Donald计算一条记录:max(10,50)=50.

因此,根据是否省略联接列,您将收到不同的"Donald"结果。如果没有使用"MAX"作为聚合函数,但在聚合节点中使用"SUM",大数据啥意思,则不会看到连接列修剪的影响。原因是"SUM"对计算它的聚合粒度不敏感。

请注意,设置"优化联接列"标志时,人工智能软件下载,与未设置该标志时相比,您看到的记录更少(本例中为3对4条记录)。在这个玩具示例中,这影响很小,但是如果有许多连接字段可以修剪掉,并且连接字段具有较高的基数,则修剪可能会对聚合的粒度产生重大影响,从而影响后续必须处理的记录数。这意味着通过合理使用"优化连接列"功能,可以预期性能优势,为了演示使用联接列修剪时,生成的度量值可能会根据请求的列而改变,让我们从右表中请求一列(在本例中为"description"),这样联接修剪和结果联接列修剪就不会发生。在选择"优化联接列"的情况下运行以下查询。

选择"描述","员工",金额("amount")为"amount"从"OPTIMIZEJOINCOLUMN\u HDI\u DB\u 1〃。"示例OPTIMIZEJOINCOLUMN"分组依据"描述","employee"