join的几种实现

nested loop join

1) 选择 小的 集合作为主循环,去check在另一个集合是否存在

2)另一个集合需要有index,O(n*lgm),否则是O(n*m)


merge join 

1) 两个集合是排序的

2)比较两个list当前值,小的那一边推进指针,相等则match,同时推进。O (n + m)


hash join

1)选择小的集合建hash table

2) scan 另一集合,看是否在hash table中。


nested loop 适合其中一个集合较小,另一个集合有index

merge join 适合 连接字段上有index 也就是有序的,一般是最快的,

hash join 是一般的两个集合找相同元素的常用方案。


你可能感兴趣的:(数据库)