gpt4 book ai didi

database - Redshift 中 GROUP BY 后不必要的 DS_BCAST_INNER

转载 作者:搜寻专家 更新时间:2023-10-30 23:44:10 24 4
gpt4 key购买 nike

我有一个问题,想知道是否有解决方案。

我的查询中有绝对不必要的表广播 (DS_BCAST_INNER)。

假设您的 Table1 和 Table2 都具有相同的 distkey MediaId。

当我直接连接两个表时,没有重新分配,这很好。但是当我尝试做类似的事情时:

WITH t1
AS
(
SELECT MediaId, ... FROM Table1 ...predicates... GROUP BY MediaId, ...
),
t2 AS
(
SELECT MediaId, ... FROM Table2 ...predicates... GROUP BY MediaId, ...
)
Select ... FROM t1 JOIN t2 ON t.MediaId = t2.MediaId ....

我在 explain 命令显示的执行计划中看到 DS_BCAST_INNER,但它显然没用。

如何避免?

最佳答案

对此运行 EXPLAIN 并查看表的基础数据类型(在分组依据之前)。

我最近看到了这个,其中 Table1 是一个 char(36) 而 Table2 有一个 varchar(36);这导致了强制转换和广播,因为 char 和 varchar 的散列(可能)不同。 (varchar 将有一个可能包含在哈希中的长度前缀...:-( )

连接上的数据类型必须完全相同,而不是几乎相同。例如。 INTBIGINT 可能会有同样的问题。

(没有检查过这个,但甚至可能为空性?)

关于database - Redshift 中 GROUP BY 后不必要的 DS_BCAST_INNER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com