oracle 五

 

    本周主要做了以下事情:

 

1,  分析并解决下面sql运行时间变慢的问题:

 

SELECT b.yzt_regist_name, b.sumscore

  FROM (SELECT a.yzt_regist_name, a.sumscore, rownum rn

         FROM (SELECT yzt_regist_name, count_score AS sumscore

                 FROM kfj_user_times_count

                WHERE count_score > '0'

                  AND date_updated >= trunc(SYSDATE)

                ORDERBYdate_updated DESC) a

        WHERErownum <= :1) b

WHERE b.rn > :2

=》由于生产库没有对表做统计信息,导致走的执行计划不对,现在对sql加上了hint,让sql走正确稳定的执行计划(计划7月31号上线),sql改写如下:

 

SELECT b.yzt_regist_name, b.sumscore

   FROM (SELECTa.yzt_regist_name, a.sumscore, rownum rn

          FROM (SELECT /*+ INDEX(KFJ_USER_TIMES_COUNTIDX_KFJ_DATE_UPDATED) */

                 yzt_regist_name, count_score AS sumscore

                  FROM kfj_user_times_count

                 WHERE count_score > '0'

                   AND date_updated >= trunc(SYSDATE)

                 ORDER BY date_updated DESC) a

         WHERE rownum <= 1) b

  WHERE b.rn > 2

 

 

 

2,  立项要优化的sql有6个其中有4个已通过技术评审,还有2个需要和业务沟通确认下逻辑。

 

3, 生产预警sql解决列表详见附件《生产预警sql解决列表.xlsx》

 

4,SQL  REVIEW :

   问题:5.1,大家用到的所有sql脚本都是要review的,不要只发我建表脚本,因为索引主要是根据select,update语句和表的数据量设计的,不发我代码中的sql我这边没办法设计索引!

5.2,测试库上所有sql脚本由我这边执行,不要自己执行。

5.3,要review 的sql 提前发给我,给我留点分析的时间,最好是在开发库自己测试好后就提交到svn上并提醒我review,而不是马上要测试了才发给我。

        5.4,表主键使用序列或函数生成的表,初始化数据的时候也一定要用序列或函数生成主键值。不要自己指定值,防止主键冲突。

        5.5,代码中用到的sql,不用copy以前的,要了解业务,自己写。以前的sql性能上很多是有问题的。

        5.6,咱们系统里面要用外连接的情况很少的,如果用到,一定要进行充分测试,看逻辑是否正确。

注意下面两个sql的区别:(测试数据我在开发库pa18data用户下已造好,大家直接在上面运行比较下结果)

 

sql1: SELECT * FROM lxj_test_aa aa left JOIN lxj_test_bb bb ON aa.aa1 = bb.bb1 ANDaa.aa4 = 'd' and bb.bb1='4' ;

 

sql2: SELECT * FROM lxj_test_aa aa left JOIN lxj_test_bb bb ON aa.aa1 = bb.bb1 whereaa.aa4 = 'd' and bb.bb1='4' ;

 

=》对于外连接on后的限制条件都做用于被驱动表上面,where后的限制条件是做用在结果集上的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值