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
=》立项需要优化的有6个SQL,现在4个sql已通过了技术评审,有1个需要和业务确认逻辑 徐其华在跟进,还有1个优化后已初步测试性能提升较明显,待技术评审。
=》问题:
现在没有开发人员单独支持sql优化工作,进展缓慢,请领导协调。
3,pa18库升级代码兼容性检查。
=》 计划8月18号之前完成代码兼容性检查和修改。但现在没有开发人员支持,代码分析无法进行,请领导协调。
4,SQLREVIEW。
=》大家设计表结构的时候,如果没有特殊的需求,是必须要满足第三范式的。请大家设计表的时候注意下,谢谢!