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

大带宽_京东怎么使用云闪付_企业级

小七 141 0

优化联接列标志的目的

根据默认值,在查询处理期间,将请求定义联接的字段,而不管从查询的角度看是否需要该字段。这保证了有关连接字段的一致聚合行为,而与查询请求的字段无关。支持稳定的聚合行为(独立于查询请求的字段)是有意义的,因为聚合行为的更改可能导致度量值的结果值的更改。

作为可以省略连接列的情况的示例,请设想以下场景:查询只请求字段从一个连接伙伴到另一个伙伴(不请求任何字段)的基数设置为1,并且它不是内部连接。在这种情况下,连接的执行不会影响结果(有关连接修剪的解释,请参阅blog)。因此,不必执行联接,如果查询没有请求联接字段,则可以对其进行修剪(不请求中间处理)。默认情况下,不会进行此联接列修剪,但如果设置了"优化联接列"标志,则可以修剪联接字段。

优化联接列标志的相关性

在不同联接字段上有许多联接伙伴的情况下,淘客app系统,查询通常只从使用"优化联接"的联接伙伴的一小部分中选择字段columns标志允许从聚合中省略各种联接字段。原因是该标志明确指出,如果查询本身未请求连接字段,则不必将其包含在聚合中。这意味着,通过省略join字段,从而省略可能增加聚合粒度的字段,可以大大减少处理的记录数。因此,可以预期更好的性能和更低的内存消耗。好处的多少取决于查询在运行时请求的字段以及定义联接的字段。

使用optimize join columns标志的副作用

使用optimize join columns标志时,您应该注意以下副作用:

修剪联接列的先决条件(具有optimize的效果)连接列标志):

仅当以下所有条件都成立时,才能对连接列进行修剪:

先决条件的说明

以下是优化连接列标志工作所需的这些先决条件的一些说明:

1.)如果查询请求连接字段,则显然无法将其修剪掉

2.)如果字段从两个联接伙伴请求联接时,必须执行联接,因此必须请求联接字段

3)。如果联接不是外部联接、引用联接或文本联接,则联接可能会"添加"或"删除"记录。这意味着必须执行连接才能确定正确的记录数。作为连接执行的结果,将请求连接列。

如图3所示。)以下示例显示了内部连接和外部连接在保留记录数方面的差异:

表1的连接列中有以下值:

a、b、c

表2的连接字段中有以下值:

a、a、a、,b

a)内部联接:只检索具有匹配伙伴的字段

输出将具有值:表1中的a、a、a、b

这将导致以下结果:

请注意,表1中具有值"a"的记录将增加三倍,因为表2中有三个匹配条目。条目"c"将被省略,秒单客返利机器人,因为表2中没有匹配的条目。

这意味着使用内部连接时,输出记录的数量可以根据是否执行连接而改变。在本例中,输出记录的数量从左表中的3个值更改为4个值,但这可能或多或少取决于右表中的条目。

让我们看看一个外部联接,对比一下

b)外部联接:也会检索右表中没有匹配条目的字段

您可以在屏幕截图中看到上面的条目"c"不会被省略,大数据研发,即使右表中没有匹配项。从这个意义上说,外部连接保留了输出记录的数量。但是,您还可以看到条目"a"又增加了三倍。这意味着,如果右表中存在多个匹配项,则输出记录的数量可以更改。这就是为什么有正确的基数是至关重要的(前提4以上)。例如,如果将基数设置为n..1,并且右表中确实最多有一个匹配项,则执行联接时不会出现条目加倍,因为左表中的每个条目在右表中最多有一个条目。如果右表中没有与左表中的条目匹配的条目,则这不是问题:该值仍将保留,云服务器试用,如上面条目"c"所示。

这意味着:右表的基数为1时,联接的执行不会影响进一步处理的记录数,因此联接可以继续如果不必从正确的表中读取任何字段,则省略。

请记住:如果设置了错误的基数,人工智能关键技术,则输出可能是错误的,因为即使联接会影响进一步处理的记录数,也可能会对联接进行修剪。优化器信任您的基数设置!

4.)如第3点所述:如果要修剪的表可能提供多个匹配的伙伴连接,则不应进行修剪。因此,对于不请求列的表,基数必须设置为1。但是,在运行时不检查是否可以出现多个匹配伙伴。重复:优化器信任您的基数设置。因此,您必须确保您的设置"1"反映了事实。

示例

优化联接列标志对查询处理影响的示例可以在这里找到。在本例中,一个基数为n..1的简单左外联接将使用optimize join columns标志集建模一次,而不使用此标志集建模一次。将使用聚合函数,聚合的粒度对其非常重要。这将用于演示如何设置optimizejoin columns标志来更改度量的结果值。随后,功能"Debug this view"将用于检查是否确实发生了连接修剪,并且如果设置了该标志,则中间聚合粒度将发生变化。

摘要