oracle收集直方图,Oracle的直方图

直方图

1、概述

当某列数据分布不均衡,为了让CBO能生成最佳的执行计划,我们可能需要对表收集直方图,直方图最大的桶数(Bucket)是254。收集直方图是一个很耗时的过程,如无必要,千万别去收集直方图。

OLTP系统中没有必要千万不要去收集直方图,因为OLTP一般会用绑定变量,但11g之前一直有绑定变量窥探的问题,导致收集的直方图没有作用;

对于SELECT列不要去收集直方图 要对WHERE列使用直方图  因为直方图是给CBO使用的

请注意 在OLTP系统中如果没有必要千万不要收集图的统计,因为如果收集了可能遇到绑定变量窥探,在9i, 10g 几乎没有办法解决,在11g里面出了一个自适应游标,解决了绑定变量窥探,但是也是有风险。

2、如何查看直方图

直方图是根据统计信息而来的,所以要先收集统计信息

(1)收集统计信息

BEGIN

DBMS_STATS.GATHER_TABLE_STATS(ownname          =>'SCOTT',

tabname          =>'TEST',

estimate_percent => 100,

method_opt       => 'for all columns size skewonly',

no_invalidate    => FALSE,

degree           => 1,

cascade          => TRUE);

END;

/<

你可能感兴趣的:(oracle收集直方图)