ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 直方图的管理

直方图的管理

原创 Linux操作系统 作者:yaguo_96 时间:2008-09-26 10:55:25 0 删除 编辑

BUCTET < NUM_DISTINCT得到的是HEIGHT BALANCED(高度平衡)直方图,
BUCTET = NUM_DISTINCT的时候得到的是FREQUENCY(频率)直方图。这里面BUCTET的最大值是254,所以我们一般见到的直方图都是HEIGHT BALANCED(高度平衡)直方图。
如果NUM_DISTINCT <254,buctet最大为NUM_DISTINCT
/////////////dba_tab_histograms 字段解释

endpoint_value:表中的值
---高度直方图
endpoint_number:bukets 号
这时候buckets小于于行数.一个桶对应的记录数大致为row_nums/buckets,
如果一个值跨越多个桶,那么这个值也只显示一条记录,endpoint_number只显示其跨越的最后一个桶号,endpoint_number会出现不连续。
如果SQL传入的值跨越多个多,oracle会根据直方图信息计算出比较精确的基数
如果SQL传入的值只在一个桶,oracle利用density进行简单的计算得出大概的基数
---频率直方图
这时候buckets大于等于行数,所以每个buket对应一个值,显示为一条记录
endpoint_number: 小于等于这个值得记录数,这个显示的表的总记录数和dba_tab_columns.sample_size相等,有可能不等于实际值
这个时候计算选择率完全按直方图的信息,可以得到准确的信息

---删除直方图
exec  dbms_stats.gather_table_stats(ownname => 'OWNER',tabname => 'TABLE_NAME',method_opt => 'FOR ALL  COLUMNS size 1',cascade => TRUE,no_invalidate => FALSE);
---建立直方图
exec  dbms_stats.gather_table_stats(ownname => 'OWNER',tabname => 'TABLE_NAME',method_opt => 'FOR ALL  COLUMNS size auto ',cascade => TRUE,no_invalidate => FALSE);

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69265/viewspace-464434/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-06

  • 博文量
    27
  • 访问量
    47914