oracle三种表连接方式
1、 排序合并连接(Sort Merge Join) 排序合并连接的执行过程如下所示: * 将每个行源的行按连接谓词列排序 * 然后合并两个已排序的行源,并返回生成的行源 例如: select * from employees d,departments t where d.department_id=t.department_id; 注意:排序合并连接一般用在两张表中没有索引,并且连接列已经排好序的情况下。 ? 2、嵌套循环连接(Nested Loops Join) * 两个表中的一个被定义为“外部表”(或“驱动表”) * 另一个表被称为“内部表” * 将针对外部表中的每一行检索内部表中所有匹配的行 注意:join的顺序很重要,一般选择小表作为“驱动表”,大表作为“内部表”。如两个表,一个100行,一个10000行,理想的连接方式是:100行的小表作为“驱动表”,10000行的大表作为“内部表”,用小表中的每条记录去匹配大表中的记录。如果两张表的连接词在大表中是索引列,则是最完美的。 ? 3、 哈希连接(Hash Join) * 优化器对小表利用连接键在内存中建立hash表 * 扫描大表,每得到一条记录,就来hash表中“探测”一次,找出与hash表匹配的行 注意:Hash Join 是CBO做大数据集连接时的常用方式。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |