oracle表统计信息的使用

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

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

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

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

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

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

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

时间: 09-23

oracle表统计信息的使用的相关文章

验证Oracle收集统计信息参数granularity数据分析的力度

最近在学习Oracle的统计信息这一块,收集统计信息的方法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, ---所有者名字 tabname VARCHAR2, ---表名 partname VARCHAR2 DEFAULT NULL, ---要分析的分区名 estimate_percent NUMBER DEFAULT NULL, ---采样的比例 block_sample BOOLEAN DEFAULT FALSE, ---是否块分析

ORACLE 收集统计信息

原文链接:http://blog.itpub.net/2317695/viewspace-1226138/ 今天网上看到一篇关于收集统计信息的文章,还不错,特转载下来. 1.     理解什么是统计信息 优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划.优化器统计信息包括: ·         表的统计信息 o   行数 o   Block数 o   行平均长度 ·         列的统计信息 o   列中不同值的

Oracle Mysql 统计信息

我们知道Oracle的统计信息将严重影响CBO对执行计划的选择,针对不同大小的表制定收集规则并且定期执行是非常重要的.Oracle通过如下脚本即可收集统计信息: BEGIN DBMS_STATS.GATHER_TABLE_STATS(ownname =>'ZBDBA', tabname =>'TEST', estimate_percent =>30, method_opt =>'for all columns size repeat', no_invalidate =>FAL

oracle学习----统计信息

1.收集统计信息的方式 for all columns size skewonly BEGIN  DBMS_STATS.GATHER_TABLE_STATS(ownname          => 'SCOTT',                                tabname          => 'TEST',                                estimate_percent => 100,                        

Oracle自动统计信息的收集原理及实验

[日期:2014-11-21]来源:Linux社区  作者:stevendbaguo[字体:大 中 小] 从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息.这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启. 调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息.该过程首先检测统计信息缺失和陈旧的对象.然后确定优先级,再开始

Oracle之统计信息

1.有关OPTIMIZER_USE_PENDING_STATISTICS的问题. [email protected]> SELECTDBMS_STATS.GET_PREFS('PUBLISH') PUBLISH FROM DUAL; PUBLISH----------------------------------------------------------------------------------------------------TRUE 返回为true或者false.True表示

Oracle里收集与查看统计信息的方法

Oracle数据库里的统计信息是这样的一组数据:它存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息.CBO会利用这些统计信息来计算目标SQL各种可能的.不同的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划. Oracle数据库里的统计信息可以分为如下6种类型: 表的统计信息 索引的统计信息 列的统计信息 系统统计信息 数据字典统计信息 内部对象统计信息 表的统计信息用于描述Oracle数据库里表的详细信息,它包含了一些典型的维度,如记录数.表块

Oracle 判断 并 手动收集 统计信息 脚本

CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS AUTHID CURRENT_USER IS BEGIN SYS.DBMS_STATS.GATHER_TABLE_STATS('SchName', 'TableName', CASCADE => TRUE); END; / select owner,table_name,last_analyzed,num_rows from dba_tables where owner='SYSTEM' a

收集oracle统计信息

优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN:列统计: --列中唯一值的数量(NDV),NULL值的数量,数据分布:             --DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM:索引统计:--叶块数量,等级,聚簇因子:             --DBA_INDEXES:LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL: