当心外部连接中的ON子句

       在SQL tuning中,不良写法导致SQL执行效率比比皆是。最近的SQL tuning中一个外部连接写法不当导致过SQL执行时间超过15分钟左右此即
为一例。通过修正该SQL的写法之后,过高的逻辑读呈数量级下降以及SQL语句执行时间也大幅下降。下面给出一个列子来演示该情形。

一、创建演示环境

二、总结
  1、尽可能避免SQL不良写法导致的不良后果
  2、此例中由于将谓词信息放到ON子句中,在数据量庞大的表(百万行)连接中,则该写法导致过多的物理和逻辑I/O,使得中间结果集庞大
  3、谓词信息放到ON子句中同时也导致索引失效
  4、尽可能的在满足需求的情况下减小中间结果集

三、更多参考

父游标、子游标及共享游标

绑定变量及其优缺点

dbms_xplan之display_cursor函数的使用

dbms_xplan之display函数的使用

执行计划中各字段各模块描述

使用 EXPLAIN PLAN 获取SQL语句执行计划

启用 AUTOTRACE 功能

函数使得索引列失效

Oracle 绑定变量窥探

Oracle 自适应共享游标 

Oracle ROWID 

收缩表段(shrink space)

临时表空间的管理与受损恢复  

Oracle 彻底 kill session 

Oracle 硬解析与软解析

共享池的调整与优化(Shared pool Tuning)

Buffer cache 的调整与优化(一)

Buffer cache 的调整与优化(二) 

Oracle 表缓存(caching table)的使用

PGA的设置与调整

 

posted @ 2012-01-05 16:16  ajuanabc  阅读(233)  评论(0编辑  收藏  举报