[20140505]删除直方图_delete histogram

[20140505]删除直方图_delete histogram.txt

 

昨天看了https://jonathanlewis.wordpress.com/2014/05/01/delete-histogram/
介绍删除直方图的方法,这样比较快捷.

SCOTT@test> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SCOTT@test> create table t as select rownum id1 , mod(rownum,100)+1 id2, 'test' name from dual connect by levelTable created.

SCOTT@test> execute dbms_stats.gather_table_stats(user,'t',cascade=>true,method_opt=>'for all columns size 1,for columns id1 size 254 ,for columns id2 size 254');
PL/SQL procedure successfully completed.

SCOTT@test> select column_name,num_distinct,histogram from dba_tab_columns where owner=user and table_name='T';
COLUMN_NAME          NUM_DISTINCT HISTOGRAM
-------------------- ------------ ---------------
ID1                         10000 HEIGHT BALANCED
ID2                           100 FREQUENCY
NAME                            1 NONE

-- Jonathan Lewis的方法,
declare
    srec            dbms_stats.statrec;
    m_distcnt       number;
    m_density       number;
    m_nullcnt       number;
    m_avgclen       number;
 
    n_array                 dbms_stats.numarray;
 
begin
    dbms_stats.get_column_stats(
        ownname     => user,
        tabname     => 't',
        colname     => 'id1',
        distcnt     => m_distcnt,
        density     => m_density,
        nullcnt     => m_nullcnt,
        srec        => srec,
        avgclen     => m_avgclen
    );
 
    srec.bkvals := null;
    srec.novals :=  dbms_stats.numarray(
                utl_raw.cast_to_number(srec.minval),
                utl_raw.cast_to_number(srec.maxval)
            );
    srec.epc := 2;
    dbms_stats.prepare_column_values(srec, srec.novals);
 
    m_density := 1/m_distcnt;
 
    dbms_stats.set_column_stats(
        ownname     => user,
        tabname     => 't',
        colname     => 'id1',
        distcnt     => m_distcnt,
        density     => m_density,
        nullcnt     => m_nullcnt,
        srec        => srec,
        avgclen     => m_avgclen
    );
 
exception
    when others then
        raise;      -- should handle div/0
 
end;
/

SCOTT@test> select column_name,num_distinct,histogram from dba_tab_columns where owner=user and table_name='T';
COLUMN_NAME          NUM_DISTINCT HISTOGRAM
-------------------- ------------ ---------------
ID1                         10000 NONE
ID2                           100 FREQUENCY
NAME                            1 NONE

--Id1字段的直方图删除了.

--我常用的方法就是给字段修改某个属性.
SCOTT@test> execute dbms_stats.set_column_stats(ownname=>user,tabname=>'T',colname=> 'id2',distcnt=>NULL);
PL/SQL procedure successfully completed.

SCOTT@test> select column_name,num_distinct,histogram from dba_tab_columns where owner=user and table_name='T';
COLUMN_NAME          NUM_DISTINCT HISTOGRAM
-------------------- ------------ ---------------
ID1                         10000 NONE
ID2                           100 NONE
NAME                            1 NONE

--实际上11G的包dbms_stats提供了delete_column_stats可以删除统计,这样方便不少.我好像以前测试10g不行!
SCOTT@test> execute dbms_stats.gather_table_stats(user,'t',cascade=>true,method_opt=>'for all columns size 1,for columns id1 size 254 ,for columns id2 size 254');
PL/SQL procedure successfully completed.

SCOTT@test> exec dbms_stats.delete_column_stats(ownname=>user, tabname=>'T', colname=>'ID1', col_stat_type=> 'HISTOGRAM');
PL/SQL procedure successfully completed.

SCOTT@test> select column_name,num_distinct,histogram from dba_tab_columns where owner=user and table_name='T';
COLUMN_NAME          NUM_DISTINCT HISTOGRAM
-------------------- ------------ ---------------
ID1                         10000 NONE
ID2                           100 FREQUENCY
NAME                            1 NONE

--如果执行如下,该字段的统计信息一起删除.
SCOTT@test> execute dbms_stats.delete_column_stats(ownname=>user,tabname=>'t',colname=>'id2');
PL/SQL procedure successfully completed.

SCOTT@test> select column_name,num_distinct,histogram from dba_tab_columns where owner=user and table_name='T';
COLUMN_NAME          NUM_DISTINCT HISTOGRAM
-------------------- ------------ ---------------
ID1                         10000 NONE
ID2                               NONE
NAME                            1 NONE

时间: 2024-09-20 20:25:12

[20140505]删除直方图_delete histogram的相关文章

[20120905]删除直方图.txt

[20120905]删除直方图.txt 维护直方图是一个成本很高的操作,9i的缺省模式Method_Opt=> 'FOR ALL COLUMNS SIZE REPEAT ',而10g的缺省模式 Method_Opt => 'FOR ALL COLUMNS SIZE AUTO ',这样会导致在许多不必要的字段建立直方图. 我自己在维护10g的数据库也存在许多sql执行计划不稳定的情况,我后来采取的方法就是把这些控制在自己的手中. 修改10g的缺省模式为Method_Opt=> 'FOR A

图像学习之如何理解方向梯度直方图(Histogram Of Gradient)

特征描述子(Feature Descriptor) 特征描述子就是图像的表示,抽取了有用的信息,丢掉了不相关的信息.通常特征描述子会把一个w*h*3(宽高3,3个channel)的图像转换成一个长度为n的向量/矩阵.比如一副64*128*3的图像,经过转换后输出的图像向量长度可以是3780. 什么样子的特征是有用的呢?假设我们想要预测一张图片里面衣服上面的扣子,扣子通常是圆的,而且上面有几个洞,那你就可以用边缘检测(edge detector),把图片变成只有边缘的图像,然后就可以很容易的分辨了

如何看懂oracle 直方图

转自:http://czmmiao.iteye.com/blog/1484298 直方图概述:在Oracle中直方图是一种对数据分布质量情况进行描述的工具.它会按照某一列不同值出现数量多少,以及出现的频率高低来绘制数据的分布情况,以便能够指导优化器根据数据的分布做出正确的选择. 在某些情况下,表的列中的数值分布将会影响优化器使用索引还是执行全表扫描的决策.当where 子句的值具有不成比例数量的数值时,将出现这种情况,使得全表扫描比索引访问的成本更低.这种情况下如果where 子句的过滤谓词列之

Oracle直方图

Oracle直方图 直方图是一种按数据出现的频率来进行分类存储的方法.在oracle中直方图是用来描述表中列数据的分布情况.每一个sql在被执行前都要经过优化这一步骤那么在优化器给出一个最优执行计划之优化器应该要知道sql语句中所引用的底层对象的详细信息. 直方图描述的对象包括列中不同值的数量和它们出现的频率.现在存储每一个不同值和它出现的频率是不可行的,特别是对于大表来说列中有上万个不同值,oracle使用直方图来存储关于列中数据分布的有用信息而且oracle的CBO使用直方图信息来计算出一个

图像直方图与直方图均衡化

图像直方图与直方图均衡化 图像直方图以及灰度与彩色图像的直方图均衡化 图像直方图: 概述: 图像的直方图用来表征该图像像素值的分布情况.用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目. 图像直方图图形化显示不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度范围为[0~255]之间,对于RGB的彩色图像可以独立显示三种颜色的图像直方图. 同时直方图是用来寻找灰度图像二值化阈值常用而且是有效的手段之一,如果一幅灰度图像的直方图显示为两个波

【性能优化】Oracle直方图解析

一.何谓直方图: 直方图是一种统计学上的工具,并非Oracle专有.通常用于对被管理对象的某个方面的质量情况进行管理,通常情况下它会表现为一种几何图形表,这个图形表是根据从实际环境中所收集来的被管理对象某个方面的质量分布情况的数据所绘制成的,通常会画成以数量为底边,以频度为高度的一系列连接起来的矩形图,因此直方图在统计学上也称为质量分布图.比如下图所示,是一个以关学生化学考试成绩分数分布情况绘制的直方图:   二.Oracle中直方图的作用: 既然直方图是一种对被管理对象某一方面质量进行管理的描

【数字图像处理】四.MFC对话框绘制灰度直方图

        本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行回忆讲解,主要通过MFC单文档视图实现点击弹出对话框绘制BMP图片的灰度直方图,再获取平均灰度.中指灰度和标准差等值.文章比较详细基础,希望该篇文章对你有所帮助~        [数字图像处理]一.MFC详解显示BMP格式图片        [数字图像处理]二.MFC单文档分割窗口显示图片        [数字图像处理]三.MFC实现图像灰度.采样和量化功能详解    

[20170603]12c Top Frequency histogram.txt

[20170603]12c Top Frequency histogram.txt --//个人对直方图了解很少,以前2种直方图类型对于目前的许多应用来讲已经足够,或者讲遇到的问题很少. --//抽一点点时间,简单探究12c Top Frequency histogram. --//以前的频率直方图Frequency histogram,受限bucket(桶的大小),如果有255个不同值,oracle分析后不会建立频率直方图,而是建立高 --//度直方图.这样的情况会导致一些流行值的统计在显示执

oracle 直方图

转: 一.    何谓直方图: 直方图是一种统计学上的工具,并非Oracle专有.通常用于对被管理对象的某个方面的质量情况进行管理,通常情况下它会表现为一种几何图形表,这个图形表是根据从实际环境中所收集来的被管理对象某个方面的质量分布情况的数据所绘制成的,通常会画成以数量为底边,以频度为高度的一系列连接起来的矩形图,因此直方图在统计学上也称为质量分布图.比如下图所示,是一个以关学生化学考试成绩分数分布情况绘制的直方图:       二.       Oracle中直方图的作用: 既然直方图是一种