拿1个sql举个例子,我只贴出了where后面部分

实际环境中有init_date 和direct_no的组合索引IDX_DATE_NO

上诉标红处,:b3=0 和:b3<>0这两种情况oracle在选择执行计划的时候会有很大的区别。

如果是:b3<>0,则oracle会在index_range_scan IDX_DATE_NO 时一次过滤出同时符合 init_date和direct_no列的数据。执行效果如下:

如果是:b3=0,则oracle会在index_range_scan IDX_DATE_NO 时只滤出符合 init_date列的数据。执行效果如下:

  带有绑定变量的sql,oracle在选择执行计划的时候会相对保守,按照无法获知:b3输入值为前提条件,选择更为稳妥的只过滤init_date列的执行计划。在调优的过程中如果我们直接替换绑定变量成具体代入值,看到的执行计划只是雾里看花,花非花,雾非雾。不能表示最终的调优结果!

  所以在对带有绑定变量的sql调优时,要严格按照定义绑定变量、赋值、执行的原则获取调优过程中的执行计划。

      附上绑定变量值查询脚本,实际使用替换下sql_id。

select * from (select case CC.datatype_string when 'NUMBER' THEN 'var ' || substr((name),) || ' ' || datatype_string || ';'
ELSE 'var ' || substr((name),) || ' ' || datatype_string || ';' END as sqlbindss from (select *
from dba_hist_sqlbind a
where sql_id = 'gxbw9up2pw0fx'
order by last_captured) CC
where rownum <= (select count(*)
from dba_hist_sql_bind_metadata a
where sql_id = 'gxbw9up2pw0fx')
union
select case CC.datatype_string when 'NUMBER' then 'exec '||name||' := '|| value_string || ';'
ELSE 'exec '||name||' := '''|| value_string || ''';' END as sqlbindss
from (select *
from dba_hist_sqlbind a
where sql_id = 'gxbw9up2pw0fx'
order by last_captured) CC
where rownum <= (select count(*)
from dba_hist_sql_bind_metadata a
where sql_id = 'gxbw9up2pw0fx')) order by desc;

最新文章

  1. Spring学习系列(二) 自动化装配Bean
  2. 怎么在Microsoft Project中冻结列
  3. word 常用宏代码
  4. java中使用poi导入导出excel文件_并自定义日期格式
  5. 039. asp.netWeb用户控件之七实现具有虚拟键盘的功能的用户控件
  6. 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
  7. SQL SERVER中非聚集索引的覆盖,连接,交叉,过滤
  8. NetworkComms网络通信框架V3结构图
  9. mysql 获取季度的第一天 本月的第一天,本周的第一天sql语句(转)
  10. linux 发邮件
  11. 排序1,2......n的无序数组,时间复杂度为o(n),空间复杂度为o(1)
  12. go并发调度原理学习
  13. 基于Elastalert的安全告警剖析
  14. CSS iconfont阿里巴巴矢量图库在开发中实战使用
  15. Linux中DDNS配置
  16. Python函数之递归函数
  17. fiddler 使用记录
  18. C++——创建类的时候用new与不用new 的区别(转)
  19. SQL Server 2008 R2提示评估期已过
  20. oracle中rownum和row_number()

热门文章

  1. robotframework:appium切换webview后,在webview里滑动屏幕
  2. ASP.NET Core:创建一个Core项目
  3. CSS中style用法详解
  4. 怎么在notepad里面,将字符串替换成换行
  5. .net 下webservice 的WebMethod的属性
  6. hdoj1176【DP】
  7. python __builtins__ range类 (56)
  8. LuoguP2846[USACO08NOV]光开关Light Switching【线段树维护区间异或】By cellur925
  9. Counting The Important Pairs CodeChef - TAPAIR
  10. 微服务dubbo面试题