Oracle_sqltuning_ccdb1_20180628(sql优化)

1.执行计划中acess、filter的区别

2.函数索引与普通索引、本地索引和全局索引的区别

3.

cassdb11数据库每天都会跑的一个批量语句,考虑到业务要修改的数据量,此批量执行时间较长,后在CUR_COR_INVM_B上创建复合函数索引IDX_CUR_COR_INVM_B_2,针对同一地区的批量语句由原来的13661秒缩小到373秒,具体的分析、创建索引的过程如下:
 
1.sql的初始执行计划的sql monitor如下:
 
可以看到此sql大部分的时间都在做第12步操作,第12步主要是先通过条件(("T2"."AREA_NO"=:B2 OR "T2"."AREA_NO"=:B1))去访问表,再将获取到的数据按照条件TO_NUMBER("T2"."TRAN_ACCT_NO")=TO_NUMBER(:B1)进行过滤。acess表主要会消耗IO,而filter的会消耗CPU。通过查看第12步的消耗,有11159S都消耗在CPU上。可见如果降低filter的消耗,既可以降低CPU的使用率,也可以缩短SQL的执行时间。
 
 
 
2.考虑到T2表的TRAN_ACCT_NO列选择性非常好,可以考虑在此列上创建索引,可虑到在和表T1做关联的时候存在字段类型转换的过程,因此创建复合函数索引,sql的执行时长明显缩短。
 
posted @ 2018-06-28 09:35  dayu.liu  阅读(125)  评论(0编辑  收藏  举报