--------------创建测试表

create table generator as

select

rownum         id

from        all_objects

where        rownum <= 2000

;

create table t1 (

skew                not null,

padding

)

as

select

/*+ ordered use_nl(v2) */

v1.id,

rpad('x',400)

from

generator        v1,

generator        v2

where

v1.id <= 80

and        v2.id <= 80

and        v2.id <= v1.id

order by

v2.id,v1.id;

;

create index t1_i1 on t1(skew);

select count(*) from t1;

COUNT(*)

----------

3240

-----------------看看效果如何

select

skew, count(*)

from

t1

group by

skew

order by

skew

;

SKEW   COUNT(*)

---------- ----------

1          1

2          2

3          3

4          4

5          5

6          6

7          7

8          8

9          9

10         10

11         11

12         12

13         13

14         14

15         15

16         16

17         17

18         18

19         19

20         20

21         21

22         22

23         23

24         24

25         25

26         26

27         27

28         28

29         29

30         30

31         31

32         32

33         33

34         34

35         35

36         36

37         37

38         38

39         39

40         40

41         41

42         42

43         43

44         44

45         45

46         46

47         47

48         48

49         49

50         50

51         51

52         52

53         53

54         54

55         55

56         56

57         57

58         58

59         59

60         60

61         61

62         62

63         63

64         64

65         65

66         66

67         67

68         68

69         69

70         70

71         71

72         72

73         73

74         74

75         75

76         76

77         77

78         78

79         79

80         80

-----------------分析表

begin

dbms_stats.gather_table_stats(

user,

't1',

cascade => true,

estimate_percent => null,

method_opt => 'for all columns size 80'-----------------产生等频直方图

);

end;

/

1)等值条件下的基数

select

skew, padding

from

t1

where

skew = 70

;

------------------------------------------

| Id  | Operation         | Name | Rows  |

------------------------------------------

|   0 | SELECT STATEMENT  |      |    70 |

|*  1 |  TABLE ACCESS FULL| T1   |    70 |

------------------------------------------

基数  =查看直方图可以获得此值出现的频率=70

2)select

skew, padding

from

t1

where

skew between 70 and 80;

-------------------------------------------

| Id  | Operation         | Name | Rows  |

-------------------------------------------

|   0 | SELECT STATEMENT  |      |   825 |

|*  1 |  TABLE ACCESS FULL| T1   |   825 |

-------------------------------------------

基数  =70+71+。。+80=825

3)绑定变量的情况下

select

skew, padding

from

t1

where

skew=:a;

------------------------------------------

| Id  | Operation         | Name | Rows  |

------------------------------------------

|   0 | SELECT STATEMENT  |      |    41 |

|*  1 |  TABLE ACCESS FULL| T1   |    41 |

------------------------------------------

基数  =选择率*总行数=1/num_distinct*3240=40.5~~41

注意,这里ORACLE取的并不是density的值,而只是1/num_distinct的值。

4)开区间的情况下

select

skew, padding

from

t1

where

skew>:a;

------------------------------------------

| Id  | Operation         | Name | Rows  |

------------------------------------------

|   0 | SELECT STATEMENT  |      |   162 |

|*  1 |  TABLE ACCESS FULL| T1   |   162 |

------------------------------------------

基数  =总行数*5%=3240*5%=162

5)闭区间的情况下

select

skew, padding

from

t1

where

skew>:a and skew-------------------------------------------

| Id  | Operation          | Name | Rows  |

-------------------------------------------

|   0 | SELECT STATEMENT   |      |   162 |

|*  1 |  FILTER            |      |       |

|*  2 |   TABLE ACCESS FULL| T1   |   162 |

-------------------------------------------

这里我的情况还是跟上面开区间一样,你的版本如果不是11.1.0.7很可能结果是8

即基数  =总行数*5%*5%=3240*5%*5%=8

6)如果不在取值范围内

select

skew, padding

from

t1

where

skew=-1;

-----------------------------------------------------

| Id  | Operation                   | Name  | Rows  |

-----------------------------------------------------

|   0 | SELECT STATEMENT            |       |     1 |

|   1 |  TABLE ACCESS BY INDEX ROWID| T1    |     1 |

|*  2 |   INDEX RANGE SCAN          | T1_I1 |     1 |

-----------------------------------------------------

select

skew, padding

from

t1

where

skew between 100 and 120;

-----------------------------------------------------

| Id  | Operation                   | Name  | Rows  |

-----------------------------------------------------

|   0 | SELECT STATEMENT            |       |     1 |

|   1 |  TABLE ACCESS BY INDEX ROWID| T1    |     1 |

|*  2 |   INDEX RANGE SCAN          | T1_I1 |     1 |

-----------------------------------------------------

能够看出如果查询的值不在记录范围内,ORACLE估算出来的都是1.

还有等频直方图下的density=1/(2*num_rows),暂时还不知道这个density在等频直方图里有啥用

oracle直方图基数,等频率直方图计算基数相关推荐

  1. oracle收集统计信息和直方图,oracle统计信息和直方图

    oracle统计信息和直方图的理解[@more@]以前一直对统计信息的理解就是对行的数据分布的,提供改CBO来选择高效的执行计划.这段时间看了不少资料,对统计有了一个更清晰的认识 统计信息: 1,表中 ...

  2. oracle数据库直方图,[转] oracle统计信息(statistics)和直方图(histogram)

    oracle统计信息和直方图的理解 以前一直对统计信息的理解就是对行的数据分布的,提供改CBO来选择高效的执行计划.这段时间看了不少资料,对统计有了一个更清晰的认识 统计信息: 1,表中的统计信息 2 ...

  3. 傅里叶变换音频可视化_H5录音音频可视化-实时波形频谱绘制、频率直方图

    这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...

  4. Python数据特征分析1-分布分析(极差,频率直方图等)

    数据特征分析分为以下部分: 1.分布分析 2.对比分析 3.统计分析 4.帕累托分析 5.正态性检验 6.相关性分析 数据: 分布分析 分布分析 --> 研究数据的分布特征和分布类型,分定量数据 ...

  5. java音频频谱_H5录音音频可视化-实时波形频谱绘制、频率直方图

    这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...

  6. 「音频可视化」 波形频谱和频率直方图

    1. 前言 项目中需要实现音频智能控制以及根据音乐转换色彩功能,WaveView 完全满足目前需求,完美实现需求,该库还有另外 WaveSurferView 和 FrequencyHistogramV ...

  7. 使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析

    使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析 1. 效果图 2. 原理 3. 源码 3.1 直方图3种计算方法和2种绘制方法 3.2 Mask遮罩图像直方图 参考 这篇博客将 ...

  8. r语言直方图_R语言绘制频率直方图

    频率直方图是数据统计中经常会用到的图形展示方式,同时在生物学分析中可以更好的展示表型性状的数据分布类型:R基础做图中的hist函数对单一数据的展示很方便,但是当遇到多组数据的时候就不如ggplot2绘 ...

  9. 直方图均衡化取整怎么计算_玩转直方图处理之直方图均衡化、规定化

    冒泡....双十一刚过~购物狂欢完还是要收心学习鸭!今天来说一说直方图. 直方图 定义: 直方图是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况. 一般用横轴表示数据类型,纵轴表示 ...

最新文章

  1. 【OpenCV 】反向投影
  2. 数据可视化教程来了!
  3. 心得丨程序员们,AI来了,机会来了,危机也来了,我们该咋办?
  4. FPGA篇(十一)modelsim命令行仿真提示“vsim 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决办法 (转)
  5. mac全选文字的快捷键_在mac上写作必须知道的四组快捷键
  6. 9、MySQL系统变量(查看和修改)
  7. 牛客网Wannafly模拟赛
  8. linux sed 写文件,使用sed对文件进行操作
  9. 2020快手K12教育培训行业数据价值报告
  10. 商汤研究院-SpringAutoML团队招聘啦~
  11. 华为招聘公关总监:接触近10位路透资深记者 年薪高达20万美元
  12. Java课程设计-作业管理系统
  13. 一篇文章搞懂数据仓库:元数据分类、元数据管理
  14. StretchDIBits 函数
  15. python作诗_用Python作诗,生活仍有诗和远方
  16. 2.3 pandas:汇总和计算描述统计(统计上的方法)
  17. 2016虾神封箱:虾神的空间统计书单
  18. 使用LR和XGBoost跑通criteo点击率预测数据集
  19. 进化计算(六)——NSGA II代码实现(Matlab)
  20. 7+1 款国产的在线HTML编辑器

热门文章

  1. Spring Boot 常见面试题
  2. MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-1]
  3. 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix
  4. android textView 替文字添加下划线 删除线
  5. 如何修改ECShop发货单查询显示个数
  6. 性能相差极大的SQL语句
  7. Linux iostat监测IO状态
  8. 验证中文的正则表达式
  9. 单独获取ShopEx商品类型中的扩展参数,如配货时间
  10. A decorative fence(POJ1037)