【问题分类】性能优化,功能使用
【关键字】outline
【问题描述】防止SQL执行计划突变,用outline固化执行计划
【问题原因分析】防止SQL执行计划突变,用outline固化执行计划
【解决/规避方法】
SQL--创建测试outline:ol_ab/ol_baconn sales/salesCREATE OUTLINE ol_ab FOR CATEGORY ctgy_ab ONSELECT /*+ leading(a,b) */ a.area_name, b.branch_nameFROM area a, branches bWHERE a.area_no = b.area_noAND b.branch_no LIKE '01%'AND a.area_no LIKE '01';CREATE OUTLINE ol_ba FOR CATEGORY ctgy_ab ONSELECT a.area_name, b.branch_nameFROM area a, branches bWHERE a.area_no = b.area_noAND b.branch_no LIKE '01%'AND a.area_no LIKE '01';--修改基表,交换outlineconn / as sysdbaUPDATE OL$HINTS SET OL_NAME=DECODE(OL_NAME,'OL_AB','OL_BA','OL_BA','OL_AB') WHERE OL_NAME IN ('OL_AB','OL_BA');--打开outline开关ALTER SESSION SET USE_STORED_OUTLINES=ctgy_ab;--验证应用SQL执行计划conn sales/salesexplain SELECT a.area_name, b.branch_nameFROM area a, branches bWHERE a.area_no = b.area_noAND b.branch_no LIKE '01%'AND a.area_no LIKE '01';
【影响范围】严重降低SQL执行效率
【修复版本】22.2