首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netezza/PureData -哈希连接中选择的不良分发密钥

Netezza/PureData -哈希连接中选择的不良分发密钥
EN

Stack Overflow用户
提问于 2015-01-12 20:21:21
回答 2查看 715关注 0票数 0

我使用Netezza/Pure数据进行查询。我在两个列A和B上有一个内部联接(成为一个散列连接)。A是一个分布良好的列,B是一个分布不好的列。由于某些原因,我的查询计划总是使用B而不是A作为连接的分发键,这会导致巨大的性能问题。

生成统计信息确实有助于缓解这一问题,但由于性能限制,在每次查询之前生成统计信息并不可行。在批处理运行之前,我会这样做,而不是在批处理中的每个查询之间执行。

简而言之,源表有很好的发行版,但当我加入它们时,它们选择了一个糟糕的分发键(实际上在源中根本没有将它用作分发列)。

因此,我的问题是,在没有生成统计信息的情况下,在JOIN中影响分发密钥选择的好方法是什么。我尝试过在源表的分发列周围进行更改,但这并没有多大效果,即使我确保所有的斜率都小于0.5。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-10 19:18:22

解决办法是强制使用详尽的规划师。

设置num_star_planner_rels = X;-将X设为非常高。

IBM团队认为,超过7个实体(表#)的查询将使用一个名为“雪花”的贪婪查询计划器。在7个或更少的实体,它将使用蛮力方法,以找到最佳计划。

交换条件是,对于大量实体来说,穷尽搜索非常昂贵。

票数 0
EN

Stack Overflow用户

发布于 2015-02-06 00:54:50

您可以创建一个临时表并强制分发,以便它们对齐,这将加快联接的速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27910114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档