哈希连接(Hash Join(HJ))-1

来源:互联网 发布:天气通软件下载 编辑:程序博客网 时间:2024/05/29 14:12
    (散列)哈希连接(Hash Join (HJ))

      假如有A、B两张表进行哈希连接,那么ORACLE会首先将B表在内存中建立一棵以散列表形式存在的查询二叉树C,然后开始读取A表的第一条记录,从C中去找匹配的记录,如果有,则推到结果集中。再提取A中的第二条记录,如果有,则推到结果集中,以此类推,直到A中没有记录,返回结果集。

      HasH Join:1个班的同学选舞伴,男班人数和女班人数差不多,放任男班或者女班的人去一个一个的选,这样太浪费时候,不如男班和女班各自集合起来,然后2个班级集合后选。可以这样的理解。

     今天就讨论下,Hash Join的连接方式。

      

      

      

      

      所以可以这样理解:驱动表被访问0或者1次,被驱动表也是被访问0次或者1次,绝大部分场景是驱动表和被驱动表被各访问1次),回头再和大家讨论下,hash join 里面驱动顺序、使用限制等问题。

      set linesize 1000
      SELECT /*+ leading(t2) use_hash(t1)*/ *  FROM t1, t2  WHERE t1.id = t2.t1_id  and t1.n=19;
      select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));

      

0 0