oracle表连接(四)

来源:互联网 发布:2017年二级c语言题库 编辑:程序博客网 时间:2024/06/08 07:09

哈希连接与索引

连接条件的索引对哈希连接和排序合并连接起不到传递作用,对于哈希连接和排序合并连接来说,索引的连接条件建立索引起不到快速检索的作用,但是限制条件列如果有适合的索引可以快速检索到少量记录,还是可以提升性能的。

 

两表关联等值查询,ORACLE一般倾向于走HASH连接,因为HASH连接算法本身比较高效,也比较先进。优化HASH连接可以通过调整PGA中的HASH_AREA_SIZE来优化,如果PGA是自动管理的,那么就增大PGA的大小。

 

排序合并连接与索引

排序合并连接上的连接条件虽然没有检索作用,但是有消除排序的作用,因此可以提高效率。

SQL>select /*+ordered use_merge(t2)*/

                      *

              from t1, t2

           where t1.id = t2.t1_id;

SQL>select * from table(dbms_xplan.display_cursor(null, null, 'allstats last'));

 

create index idx_t1 on t1(id);

create index idx_t1_id on t2(t1_id); -- 上面建立过

SQL>select /*+ordered use_merge(t2)*/

                      *

              from t1, t2

           where t1.id = t2.t1_id;

SQL>select * from table(dbms_xplan.display_cursor(null, null, 'allstats last'));

建了两个索引,最终只用到了一个,这是ORACLE排序合并连接的BUG,在11G官方文档里有承认。

也可以通过增大PGA,优化排序合并连接
0 0
原创粉丝点击