帮朋友发来消息,分析了AWR,系统压力不大,就是某条语句执行起来慢,已把sql抓出来,看看能否快点
SELECT sum(a.DECIMAL02 - a.DECIMAL01)
FROM AD_ACC_ENTRIE A,
AD_LINE_ITEM B,
AES_CFG_REFLECT_MAPPING C,
AD_BATCH D
WHERE A.LINE_ITEM_SERI = B.SERI_NO
AND A.BATCH_NO = D.BATCH_NO
AND D.STATUS = '3'
AND D.SYS_NO = 'S0001'
AND A.DATE01 BETWEEN :1 AND :2
AND (A.MSTRING03 LIKE :3)
AND a.MSTRING06 = c.BASE_VALUE
and c.REFLECT_NAME = 'RiskCodeBusToFin'
and c.REFLECT_VALUE like :4
and b.SSTRING26 = :5
没法给出绑定变量具体值,只有分析执行计划
AD_ACC_ENTRIE 表是大表 4000多w,AD_LINE_ITEM 表有2000多w ,其他表都是小表 几百条,几千条
执行计划如下
id=10中对 AD_ACC_ENTRIE 表没走索引,并且产生回表
分析表结构 其中 DATE01 是时间列选择性低 ,MSTRING03是序号列 选择性高,表中索引创建了没走
create index IDX_ACCENTRIE_YW on AD_ACC_ENTRIE (DATE01,MSTRING03);
创建MSTRING03为前缀的组合索引
调整后执行计划
朋友反馈感觉快多了,由于是财务系统,没法再跑一遍,需要等下个月出账才能验证最终响应时间
等待下个月 反馈结果。。。