散列连接性能起源

时间:2016-08-18 11:15:58

标签: database postgresql join hash

维基百科说:

  

首先准备较小关系的哈希表。哈希表   条目由join属性及其行组成。因为哈希   通过将哈希函数应用于连接属性来访问表,   通过使用可以更快地找到给定的连接属性的行   这张表比扫描原始关系。

看起来好像这个连接算法的速度是由于我们散列R(较小的关系)而不是S(其他较大的一个)。

我的问题是我们如何在没有在S上运行哈希函数的情况下将R的行的哈希版本与S进行比较?我们假设数据库存储一个给我们吗? 或者我错误地假设没有散列S,速度优势是由于比较哈希(唯一的,小的)而不是读取行的实际数据(不是唯一的,可能很大)?

1 个答案:

答案 0 :(得分:1)

散列函数也将用于 S 中的join属性。

我认为引用段落的含义是在属性上应用哈希函数,找到正确的哈希桶并跟随链表将比搜索表的相应行 R 使用表或索引扫描。

这种速度增益的权衡是构建哈希的成本。