首页 > 数据库技术 > 详细

oracle表统计信息的使用

时间:2015-09-25 18:51:06      阅读:425      评论:0      收藏:0      [点我收藏+]

       最近开发处理ECIF相关的项目,使用存储过程跑批处理数据。定期跑批数据,每次存储过程跑批使用临时表进行数据整理,再join这张临时表将数据放入目标表,最后清空临时表。

       问题:在join处理这步中执行较慢,有时半天不出结果集。

       解决方案:更新数据库表统计信息 + 使用多进程执行

        多进程在此不多讲。每次往临时表插入数据,数据达到几百万条,存储过程结束之后又清除表,这样会让数据库误以为该临时表数据一致为0,因数据库表统计信息并非实时。更新表统计信息能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。

        就是在执行join操作处理之前,先让数据库更新临时表表统计信息。

dbms_stats.gather_table_stats(ownname=>‘你的用户名‘,tabname=>‘你的表名‘,degree=>8,cascade=>true);

 

       有关Oracle统计信息详细详见:收集oracle统计信息



oracle表统计信息的使用

原文:http://my.oschina.net/u/163737/blog/511282

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!