选择率和基数

一、选择率(Selectivity):选择率是指满足条件的行在查询的结果集中所占的比率


1、假设教室中有120个人,如何才能确定其中有多少人的生日是在10月份?
    一年中有12个月                  --已知条件
    出生日期可能散布在这12个月中           --假设
    出生在任何一个月份中的人占整个教室总人数的1/12   --月的选择率
    请求一个特定的月份                                      --谓词
    所请求的月份确实存在               --边界检查
    教室中总人数为120                 --基本基数

    得到答案为120*1/12=10                                    --计算基数


2、与选择率相关的视图

  user_tab_col_statistics.NUM_DISTINCT --12
        user_tab_col_statistics.DENSITY      --1/12
        user_tab_col_statistics.LOW_VALUE    --1
        user_tab_col_statistics.HIGH_VALUE  --12
        user_tab_col_statistics.NUM_NULLS    

        user_tab_statistics.NUM_ROWS


3、选择率的计算
        --月份 = 10 不考虑空值:1/12
        基本选择率=density=1/num_distinct
        --月份 = 10 考虑空值:1/12*1
        选择率=基本选择率*(num_rows-num_nulls)/num_rows
       -- 月份 > 8  (12-8)/(12-1) 
      选择率=(high_value-limit)/(high_value-low_value) 
       --月份 >= 8  (12-8)/(12-1)+1/12
        选择率=(high_value-limit)/(high_value-low_value)+1/num_distinct
       --月份 < 8  (8-1)/(12-1)
    选择率=(limit-low_value)/(high_value-low_value)
       --月份 <= 8  (8-1)/(12-1)+1/12
       选择率=(limit-low_value)/(high_value-low_value)+1/num_distinct
       --月份 >= 6 and 月份 <= 9  (9-6)/(12-1)+1/12+1/12 
        选择率=(high_limit-low_limit)/(high_value-low_value)+1/num_distinct+1/num_distinct
       --月份 >= 6 and 月份 < 9  (9-6)/(12-1)+1/12
        选择率=(high_limit-low_limit)/(high_value-low_value)+1/num_distinct
       --月份 > 6 and 月份 <= 9  (9-6)/(12-1)+1/12
        选择率=(high_limit-low_limit)/(high_value-low_value)+1/num_distinct
        
二、基数(Cardinality)

    基数=选择率*总行数(num_rows)




**********本博客所有内容均为原创,如有转载请注明作者和出处!!!**********
Name:    guoyJoe

QQ:        252803295

Email:    oracledba_cn@hotmail.com

Blog:      http://blog.csdn.net/guoyJoe

ITPUB:   http://www.itpub.net/space-uid-28460966.html

OCM:     http://education.oracle.com/education/otn/YGuo.HTM
 _____________________________________________________________
加群验证问题:哪些SGA结构是必需的,哪些是可选的?否则拒绝申请!!!

答案在:http://blog.csdn.net/guoyjoe/article/details/8624392

Oracle@Paradise  总群:127149411

Oracle@Paradise No.1群:177089463(已满)

Oracle@Paradise No.2群:121341761

Oracle@Paradise No.3群:140856036


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值