- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个问题,想知道是否有解决方案。
我的查询中有绝对不必要的表广播 (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 将有一个可能包含在哈希中的长度前缀...:-( )
连接上的数据类型必须完全相同,而不是几乎相同。例如。 INT
到 BIGINT
可能会有同样的问题。
(没有检查过这个,但甚至可能为空性?)
关于database - Redshift 中 GROUP BY 后不必要的 DS_BCAST_INNER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086623/
jQuery attributeContainsPrefix [name^="value"] 对比 attributeStartsWith [name|="value"] 实际区别是什么? 最佳答案
在1.1部分在RFC 6749中,有四种角色:资源拥有者、资源服务器、客户端和授权服务器。 如果客户端和资源所有者是同一实体,OAuth 是否变得多余或不必要? 例如,我有一个封闭的 API 和一个面
我有一段代码,其中有一个带有保护子句的 raise 语句: def validate_index index # Change to SizeError raise ArgumentError
我看到了这篇文章( JPA Entity Lifecycle Events vs database trigger ),但它并没有像我在这里那样明确地询问: 当我插入 PK 值为 (null) 的行时
所以,我有一段代码看起来像 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){ // Do something }
我是一名优秀的程序员,十分优秀!