【问题标题】:Hash join clarity needed需要哈希连接清晰度
【发布时间】:2021-10-27 02:05:15
【问题描述】:

定义说明

当连接表的投影不是时使用哈希连接 已经在连接列上排序。在这种情况下,优化器构建 内部表的连接列上的内存哈希表。这 优化器然后扫描外部表以查找与哈希表的匹配项, 并相应地连接两个表中的数据。

所以表 A 是散列的,表 B 不是。那么我们如何比较散列值和非散列值呢?

【问题讨论】:

    标签: join hash hashmap data-modeling


    【解决方案1】:

    Hash tables(任何类型的)不在散列值和未散列值之间进行比较。

    散列表(任何类型)使用键的散列来确定放置实际键(此处为 FK 值)和键的值(此处为,行)。哈希用于确定性但均匀地在存储桶中均匀分布条目,目标是最小化所有存储桶中的最大条目数。

    通过动态调整存储桶的数量来保持存储桶大小(每个存储桶的条目数)较小,哈希表可以非常快速地检索,因为一旦找到存储桶,在找到的条目中几乎没有条目需要遍历在那里找到命中(或不命中)。

    哈希表是如此之快,以至于它们被认为具有恒定的时间操作 - 即,无论其中存储了多少条目(此处为行),查找/添加条目的时间都是恒定的。

    【讨论】:

    • scans the outer table for matches to the hash table。这个匹配是什么意思?
    • 它的意思是“从外部表FK(或类似FK)列中获取内部表的键,然后使用该键从哈希表中检索内部表行,并在此过程中检索密钥的哈希将用于定位将在其中找到条目的存储桶”。桶数是键的哈希除以桶数的余数 - 在计算之后,哈希被丢弃。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2012-09-16
    • 2012-10-12
    相关资源
    最近更新 更多