oracle 六

1,  生产预警sql的分析与解决。

 

   =》本周与官网有关的sql新增预警4个,都已有解决方案。详细请见附表《生产预警sql解决列表.xlsx》

 

最频繁的是下面的这个sql,这个类sql在我们系统用的也非常多,很简单,但也容易出问题,给大家分析下

 

selectcount(cs.cust_send_id) as oc_cust_send_count from oc_cust_send cs wherecs.send_result=1

 

      =》问题:

 

1.1   对 cs.send_result=1的条件做count时,应该用select count(cs.send_result),不是selectcount(cs.cust_send_id) 虽然cust_send_id是主键字段。

这样只要通过索引就能得到count的结果,不回表操作。

1.2 最后分析这个表没有对send_result字段加索引,也是预警的主要原因。

 

     解决方法如下:

 

      1,加下面索引

create indexIX_OC_CUST_SEND_SEND_RESULT on OC_CUST_SEND (SEND_RESULT) ;

 

      2,sql改写如下:

 

select /*+index(cs ix_oc_cust_send_send_result)  */ count(cs.send_result) asoc_cust_send_count from oc_cust_send cs where cs.send_result=1 ;

 

      为了强制走索引这里的hint是需要加的。

 

      在开发库对1千万的数据量做测试,预警的sql运行了31.372秒, 优化之后的sql运行了0.156秒。

 

    

=这个sql每天在频繁预警,建议走紧急版本。

 

2,  立项要优化的SQL

 

  =》立项需要优化的有6SQL,现在4sql已通过了技术评审,有1个需要和业务确认逻辑   徐其华在跟进,还有1个优化后已初步测试性能提升较明显,待技术评审。

 

=》问题:

 

   现在没有开发人员单独支持sql优化工作,进展缓慢,请领导协调。

 

3,pa18库升级代码兼容性检查。

 

     =》 计划818号之前完成代码兼容性检查和修改。但现在没有开发人员支持,代码分析无法进行,请领导协调。

 

 

4,SQLREVIEW

 

=》大家设计表结构的时候,如果没有特殊的需求,是必须要满足第三范式的。请大家设计表的时候注意下,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值