哈希连接需要清晰度

Hash join clarity needed

定义说明

Hash join is used when projections of the joined tables are not already sorted on the join columns. In this case, the optimizer builds an in-memory hash table on the inner table's join column. The optimizer then scans the outer table for matches to the hash table, and joins data from the two tables accordingly.

所以 table A 被散列而 table B 没有。那么我们如何比较散列值和非散列值呢?

Hash tables(任何类型)不对散列值和未散列值进行比较。

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

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

散列表是如此之快,以至于它们被认为具有恒定时间操作 - 即 find/add 一个条目的时间是恒定的,无论其中存储了多少条目(此处为行)。