sql优化实战-表分析

现象:
在开发环境能够正常走索引且执行效率较快,但是同样的sql语句在测试环境不走索引且执行效率较低(A和 B各为2W数据)

步骤:

  1. 执行效率较低,首先想到的是查看测试和开发的sql语句执行计划,通过查看测试环境的sql执行计划,发现查询B表没有走索引。(执行sql语句所需时间为:1分39秒)
  2. 因为没有走索引,于是就在sql语句上强制加索引(执行sql语句所需时间为:55秒)
  3. 查看加索引后的执行时间,加了索引效果并不理想,猜测可能是索引失效,于是重建两个表的索引(执行sql语句所需时间为:55秒)
    重建索引语句:
    alter index hs_crdt.idx_B rebuild;
  4. 通过2和3步骤,猜测可能不是索引的原因,于是就对A表 和 B表进行数据分析处理,再执行sql语句(执行sql语句所需时间为:小于1秒)
    (对于数据量比较大的表,最好定期进行表分析,以使oracle得到正确的统计信息,这样oracle优化器才能正确的选择执行计划)
    表数据分析语句:
      begin                    
      dbms_stats.gather_table_stats(ownname          => '用户名', 
                                                          tabname          => '表名',          
                                                   estimate_percent     => 100,                                                                      
                                                      no_invalidate      => false, --立马生效                                                                      
                                                      degree                => 8,                                                                      
                                                      granularity          => 'ALL', --分区                                                                    
                                                        cascade            => true);                 
       end;   
        /
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值