oracle直方图基数,等频率直方图计算基数
--------------创建测试表
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直方图基数,等频率直方图计算基数相关推荐
- oracle收集统计信息和直方图,oracle统计信息和直方图
oracle统计信息和直方图的理解[@more@]以前一直对统计信息的理解就是对行的数据分布的,提供改CBO来选择高效的执行计划.这段时间看了不少资料,对统计有了一个更清晰的认识 统计信息: 1,表中 ...
- oracle数据库直方图,[转] oracle统计信息(statistics)和直方图(histogram)
oracle统计信息和直方图的理解 以前一直对统计信息的理解就是对行的数据分布的,提供改CBO来选择高效的执行计划.这段时间看了不少资料,对统计有了一个更清晰的认识 统计信息: 1,表中的统计信息 2 ...
- 傅里叶变换音频可视化_H5录音音频可视化-实时波形频谱绘制、频率直方图
这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...
- Python数据特征分析1-分布分析(极差,频率直方图等)
数据特征分析分为以下部分: 1.分布分析 2.对比分析 3.统计分析 4.帕累托分析 5.正态性检验 6.相关性分析 数据: 分布分析 分布分析 --> 研究数据的分布特征和分布类型,分定量数据 ...
- java音频频谱_H5录音音频可视化-实时波形频谱绘制、频率直方图
这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...
- 「音频可视化」 波形频谱和频率直方图
1. 前言 项目中需要实现音频智能控制以及根据音乐转换色彩功能,WaveView 完全满足目前需求,完美实现需求,该库还有另外 WaveSurferView 和 FrequencyHistogramV ...
- 使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析
使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析 1. 效果图 2. 原理 3. 源码 3.1 直方图3种计算方法和2种绘制方法 3.2 Mask遮罩图像直方图 参考 这篇博客将 ...
- r语言直方图_R语言绘制频率直方图
频率直方图是数据统计中经常会用到的图形展示方式,同时在生物学分析中可以更好的展示表型性状的数据分布类型:R基础做图中的hist函数对单一数据的展示很方便,但是当遇到多组数据的时候就不如ggplot2绘 ...
- 直方图均衡化取整怎么计算_玩转直方图处理之直方图均衡化、规定化
冒泡....双十一刚过~购物狂欢完还是要收心学习鸭!今天来说一说直方图. 直方图 定义: 直方图是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况. 一般用横轴表示数据类型,纵轴表示 ...
最新文章
- 【OpenCV 】反向投影
- 数据可视化教程来了!
- 心得丨程序员们,AI来了,机会来了,危机也来了,我们该咋办?
- FPGA篇(十一)modelsim命令行仿真提示“vsim 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决办法 (转)
- mac全选文字的快捷键_在mac上写作必须知道的四组快捷键
- 9、MySQL系统变量(查看和修改)
- 牛客网Wannafly模拟赛
- linux sed 写文件,使用sed对文件进行操作
- 2020快手K12教育培训行业数据价值报告
- 商汤研究院-SpringAutoML团队招聘啦~
- 华为招聘公关总监:接触近10位路透资深记者 年薪高达20万美元
- Java课程设计-作业管理系统
- 一篇文章搞懂数据仓库:元数据分类、元数据管理
- StretchDIBits 函数
- python作诗_用Python作诗,生活仍有诗和远方
- 2.3 pandas:汇总和计算描述统计(统计上的方法)
- 2016虾神封箱:虾神的空间统计书单
- 使用LR和XGBoost跑通criteo点击率预测数据集
- 进化计算(六)——NSGA II代码实现(Matlab)
- 7+1 款国产的在线HTML编辑器
热门文章
- Spring Boot 常见面试题
- MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-1]
- 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix
- android textView 替文字添加下划线 删除线
- 如何修改ECShop发货单查询显示个数
- 性能相差极大的SQL语句
- Linux iostat监测IO状态
- 验证中文的正则表达式
- 单独获取ShopEx商品类型中的扩展参数,如配货时间
- A decorative fence(POJ1037)