暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 生成最高频率直方图 (不频繁的值没有桶来装)

原创 Asher.HU 2021-02-04
652


此方案显示了如何使用示例架构生成最高频率直方图。

假设条件

此方案假定您要在sh.countries.country_subregion_id上生成最高频率直方图该表有23行。

以下查询显示该country_subregion_id列包含8个不均匀分布的值(包括示例输出):

SELECT country_subregion_id, count(*)
FROM   sh.countries
GROUP BY country_subregion_id
ORDER BY 1;
 
COUNTRY_SUBREGION_ID   COUNT(*)
-------------------- ----------
               52792          1
               52793          5
               52794          2
               52795          1
               52796          1
               52797          2
               52798          2
               52799          9


生成最高频率直方图:

  1. 收集sh.countriescountry_subregion_id列的统计信息,指定的存储桶少于不同的值。

    例如,输入以下命令以指定7个存储桶:

    BEGIN
      DBMS_STATS.GATHER_TABLE_STATS (
        ownname    => 'SH'
    ,   tabname    => 'COUNTRIES'
    ,   method_opt => 'FOR COLUMNS COUNTRY_SUBREGION_ID SIZE 7'
    );
    END;
    
  2. 查询该country_subregion_id的直方图信息

    例如,使用以下查询(包括示例输出):

    SELECT TABLE_NAME, COLUMN_NAME, NUM_DISTINCT, HISTOGRAM
    FROM   USER_TAB_COL_STATISTICS
    WHERE  TABLE_NAME='COUNTRIES'
    AND    COLUMN_NAME='COUNTRY_SUBREGION_ID';
     
    TABLE_NAME COLUMN_NAME          NUM_DISTINCT HISTOGRAM
    ---------- -------------------- ------------ ---------------
    COUNTRIES  COUNTRY_SUBREGION_ID            7 TOP-FREQUENCY
    

    sh.countries.country_subregion_id列包含8个不同的值,但直方图仅包含7个存储桶,即n=7在这种情况下,数据库只能创建最高频率或混合直方图。在该country_subregion_id列中,前7个最频繁的值占行的95.6%,超过了阈值85.7%,生成了最高频率直方图。
           其中p = (1-(1/n))*100 = 85.7%
             前7个 最频繁的点行数 = 22/ 23(总行数)=  95.6% 
            

  3. 查询该列的端点号和端点值。

    例如,使用以下查询(包括示例输出):

    SELECT ENDPOINT_NUMBER, ENDPOINT_VALUE
    FROM   USER_HISTOGRAMS
    WHERE  TABLE_NAME='COUNTRIES'
    AND    COLUMN_NAME='COUNTRY_SUBREGION_ID';
     
    ENDPOINT_NUMBER ENDPOINT_VALUE
    --------------- --------------
                  1          52792
                  6          52793
                  8          52794
                  9          52796
                 11          52797
                 13          52798
                 22          52799
    

    图11-3最高频率直方图中的7个存储桶的图形说明。这些值在图中以硬币表示。

    图11-3最高频率直方图

    如图11-3所示每个不同的值都有自己的存储桶,但除外52795,因为它不受欢迎且统计意义不大,因此从直方图中排除了该值 。  (即值 52795 没有存储桶)
                             与标准频率直方图中的一样,端点号表示值的累积频率。


也可以看看:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论