修改隐含参数形成SQL性能降低案例之二

客户发来这样一条执行时间 1.3小时的SQL 想作优化:sql



SQL代码:数据库

INSERT INTO HWDW.TW_CI_SIM_RES (性能优化

......微信

 )oracle

SELECT    ......性能

FROM HWODS.TO_CI_I91822  S -----大表优化

 ,(spa

 SELECT PHONE_NO,TD_PHONE_NO.net

 FROM  HWDW.TW_CI_PHONE_TD_INFO-----小表code

 WHERE STATIS_DATE = :B1

  )T

WHERE S.PHONE_NO = T.TD_PHONE_NO(+);


经过SQL Monitor显示的数据发现执行计划不正常:在Estimate-rows估值正常的状况下,hash join的大表作了左表,这种状况通常是相关参数作了改动。


果真,检查发现,_right_outer_hash_enable 隐含参数被改为了false 。若是将参数改回默认的TRUE,预计SQL性能会提高10倍左右。


说明:

若是设置了 _right_outer_hash_enable=false ,那么外关联只能是主表作hash join的左表,而不考虑表的大小,在主表较大,关联表小的状况下,性能会比较差。

这种参数可能在之前的某个版本有bug,客户升级时仍保留了原来设置的值,建议升级时逐一确认各参数,使数据库达到最佳性能。


本文分享自微信公众号 - 老虎刘谈oracle性能优化(sql_tigerliu)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索