Oracle 直方图理论

一.何为直方图

  直方图是一种几何形图表,它是根据从生产过程中收集来的质量数据分布情况,画成以组距为底边、以频数为高度的一系列连接起来的直方型矩形图,如图所示

二.ORACLE 直方图

  在Oracle中直方图是一种对数据分布情况进行描述的工具。它会按照某一列不同值出现数量多少,以及出现的频率高低来绘制数据的分布情况,以便能够指导优化器根据数据的分布做出正确的选择。在某些情况下,表的列中的数值分布将会影响优化器使用索引还是执行全表扫描的决策。

  直方图的使用不受索引的限制,可以在表的任何列上构建直方图。构造直方图最主要的原因就是帮助优化器在表中数据严重偏斜时做出更好的规划。如:一到两个值(status=0和status=1,其中=0有100条数据,=1有1000000条数据,只有这两个值)就构成了表中的大部分数据(数据倾斜),相关查询就可能无法帮助减少满足查询所需的I/O数量(如查询status=1)。创建直方图可以让基于成本的优化器知道何时使用索引才最合适,或何时根据where子句中的值返回表中的80%的记录。

三.直方图分类及原理

  • 等频直方图:针对包含很少不同值的数据集,就是数据分布很均匀。
  • 等高直方图:针对包含很多不同值的数据集,数据分布不均匀 。

  直方图信息的准确性由两个数值决定,一个是bucket的个数,一个是num_distinct的个数。一般来说,bucket的数量越多,关于列数据分布的信息就越准确,但统计直方图花费的时间就越多,oracle中bucket的最大为254个,默认是75个。而sql server中默认是200个。

  • 当BUCTET < 表的NUM_DISTINCT值得到的是HEIGHT BALANCED 等高直方图
  • 当BUCTET > 表的NUM_DISTINCT值的时候得到的是FREQUENCY 等频直方图

  由于满足BUCTET = 表的NUM_DISTINCT值概率较低,所以在Oracle中生成的直方图大部分是HEIGHT BALANCED(高度平衡)直方图。

四.创建直方图

Oracle 通过指定 dbms_stats. gather_table_stats 的 method_opt 参数,来创建直方图的。 method_opt参数说明

method_opt

Accepts either of the following options, or both in combination:

  • FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]
  • FOR COLUMNS [size clause] column [size_clause] [,column [size_clause]...]

size_clause is defined as size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}

column is defined as column := column_name | extension name | extension

- integer : Number of histogram buckets. Must be in the range [1,254].

- REPEAT : Collects histograms only on the columns that already have histograms

- AUTO : Oracle determines the columns on which to collect histograms based on data distribution and the workload of the columns.
- SKEWONLY : Oracle determines the columns on which to collect histograms based on the data distribution of the columns.
- column_name : Name of a column
- extension : can be either a column group in the format of (column_name, Colume_name [, ...]) or an expression

The default is FOR ALL COLUMNS SIZE AUTO.

 

Examples
An extension can be either a column group (see Example 1) or an expression (see Example 2).Example 1
DBMS_STATS.GATHER_TABLE_STATS('SH', 'SALES', method_opt => 'FOR COLUMNS (empno, deptno)'); 
Example 2
DBMS_STATS.GATHER_TABLE_STATS('SH', 'SALES', method_opt => 'FOR COLUMNS (sal+comm)');Example 3
DBMS_STATS.GATHER_TABLE_STATS('SH', 'SALES', method_opt => 'FOR COLUMNS sal size 1');
注:1表示1个bucket的数量,即不做直方图处理Example 4
DBMS_STATS.GATHER_TABLE_STATS('SH', 'SALES', method_opt => 'FOR COLUMNS (sal+comm) size 10');
注:把sal,comm两列,按(sal+comm)表达式的和分成10个bucket。Example 5
DBMS_STATS.GATHER_TABLE_STATS('SH', 'SALES', method_opt => 'FOR COLUMNS (sal,comm) size 10');

 

转载于:https://www.cnblogs.com/polestar/p/4330968.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样把MySQL的编码方式改为utf8?

一、当我们安装好MySQL后&#xff0c;单击电脑开始&#xff0c;然后运行cmd&#xff0c;记得必须要用管理员的身份运行。然后输入net start mysql 前面操作如果忘记采用管理员身份运行的话&#xff0c;会出现系统访问错误。 二、修改MySQL的编码方式为utf8 1、找到默认MySQL的安…

要更有钱、更烧钱,OpenAI 重组,加速融资之路

来源&#xff1a;AI 科技评论OpenAI 是一个非盈利性的 AI 组织&#xff0c;他们雇佣了许多一流的研究和开发人员&#xff0c;在机器学习理论和深度学习应用方面多有诸多成果&#xff0c;我们曾经报道过的许多强化学习连续控制成果、5v5 DOTA AI「OpenAI Five」、自动生成人类水…

MFC基于单文档制作吹彩色泡泡程序

1、代码如下&#xff1a; // 吹彩色泡泡Doc.h : interface of the CMyDoc class // /#if !defined(AFX_DOC_H__559CF0A7_41F7_48A5_A356_774764C0E60F__INCLUDED_) #define AFX_DOC_H__559CF0A7_41F7_48A5_A356_774764C0E60F__INCLUDED_#if _MSC_VER > 1000 #pragma once #e…

MFC制作贪吃蛇教程详解

写在前面的话 本次贪吃蛇教程主要知识点包括以下几个方面 1 CView类中的消息响应 2 控件的消息响应 3 基于CView类内的具体游戏实现 4 数组 5 游戏图形的实现用CDC类实现。 本版游戏的具体实现是在CViewl类中实现&#xff0c;所以其他…

人们对社会与金钱奖赏的预期共享神经环路

来源&#xff1a;神经科技摘要&#xff1a;在日常生活中&#xff0c;作为多种多样的目标导向行为的诱因&#xff0c;社会性奖赏与物质性奖赏扮演着同样重要的角色。2019年2月23日&#xff0c;国际神经科学杂志《Neuroscience & Biobehavioral Reviews》(影响因子&#xff1…

埃塞俄比亚空难,人机控制权争夺后的悲剧

来源&#xff1a;姬扬科学网博客2019年3月10日&#xff0c;埃塞俄比亚航空客机起飞后6分钟突然坠毁&#xff0c;机上157人死难、无人生还&#xff0c;包括8名来自中国大陆的旅客。这次失事的飞机是刚投入使用不久的波音737-MAX8&#xff0c;与去年十月份印度尼西亚航空失事的飞…

MFC制作员工信息管理系统

1.在MFC中建立如下的对话框。 2.修改相关控件的ID如下&#xff1a; 添加按钮的ID为&#xff1a;IDC_ADD,删除按钮的ID为&#xff1a;IDC_DEL&#xff0c;修改按钮的ID为&#xff1a;IDC_MOD。 三个编辑框的ID分别为&#xff1a;IDC_NUMB,IDC_NAME,IDC_SALA。列表控件的ID为&a…

中国AI创新者论坛将于3月21日在清华大学举办

来源&#xff1a;网易智能创新者是如何改变世界的&#xff1f;史蒂夫乔布斯生前在苹果产品发布会上&#xff0c;经常会用同一张幻灯片作为总结&#xff0c;在他身后的大屏幕上会出现一个路标&#xff0c;上面标示着“技术”&#xff08;Technology&#xff09;和“人文”&#…

边缘计算:5G 时代的万亿市场

来源&#xff1a;安信证券摘要&#xff1a;边缘计算将能力从云端下沉至边缘&#xff0c;有效支撑对时延等指标要求较高的城市、交通、家居、制造等场景应用落地&#xff0c;带来边缘节点、服务商两个核心增量机遇。▌边缘计算&#xff0c;5G时代的万亿市场边缘计算成为物理世界…

MFC创建模式对话框与非模式对话框

一、创建模式对话框 1、分别添加如下三个对话框&#xff0c;其ID分别为IDD_ABOUT、IDD_CHAT、IDD_MFCTEST_DIALOG 双击”关于“按钮&#xff0c;添加相应的消息函数如下&#xff1a; void CMFCTestDlg::OnAbout() {// TODO: Add your control notification handler code here…

Mobdata:2019大数据行业研究报告

来源&#xff1a;网络大数据未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&…

怎样在MySQL中显示中文,而不出现乱码?

1、首先修改MySQL的服务器的编码方式为utf8。具体怎样修改&#xff0c; 可以参考http://blog.csdn.net/ywxk1314/article/details/51280839 2、修改好之后&#xff0c;如果我们想查看数据表中的内容&#xff0c;我们会发现&#xff0c;表中原来的中文会出现部分乱码。如下图所示…

全球回报最好的 40 个 VC 投资案例,我们可以从中学到什么?

来源&#xff1a;IT桔子&#xff08;itjuzi521&#xff09;美国知名创投研究机构 CBInsights 日前发布文章《From Alibaba to Zynga: 40 Of The Best VC Bets Of All Time And What We Can Learn From Them》&#xff0c;统计了他们所认为的 VC 最好回报的 40 个案例&#xff0…

php 实现同一个账号同时只能一个人登录

php 实现同一个账号同时只能一个人登录 张映 发表于 2015-01-22 分类目录&#xff1a; php 标签&#xff1a;mysql, nginx, openfire, php, redis 以前考虑过这个问题&#xff0c;今天实现了一下&#xff0c;挺快的&#xff0c;从研究到开发完成差不多4个小时。有点类似QQ&…

空间简史-人类认识空间的旅程与其对强化学习的启示

来源&#xff1a;混沌巡洋舰摘要&#xff1a;本文是对okeefe 1978(栅格细胞发现者&#xff0c; 2014诺贝尔奖得主)的论文 cognitive map 的总结和延申。一 空间的先验与后验之争对于我们在其中生存和繁衍的空间&#xff0c; 是如何在我们的心理世界表达的&#xff0c; 这是一…

MFC中文件打开与保存

1、文件打开与保存 // NotePad01Dlg.cpp : implementation file //#include "stdafx.h" #include "NotePad01.h" #include "NotePad01Dlg.h"#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] __FILE__; #endif/ …

《经济学人》万字长文:DeepMind和谷歌的AI拉锯战

大数据文摘出品来源&#xff1a;Economics编译&#xff1a;橡树_hiangsug、林安安、小七、张秋玥摘要&#xff1a;Deepmind或许是当今世界对AGI影响最深远的公司。《经济学人》近日长文撰写了这家明星AI公司及其创始人的故事。通过对二十余名内部人士的采访&#xff0c;研究了这…

MFC制作计算器

1、代码如下&#xff1a; // zsjsqDlg.cpp : implementation file //#include "stdafx.h" #include "zsjsq.h" #include "zsjsqDlg.h"#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] __FILE__; #endif/ // CAb…

AI2:预计2030年中国AI研究或领跑全球

来源&#xff1a;网络大数据据美国科技媒体GeekWire报道&#xff0c;美国西雅图艾伦人工智能研究所(AI2)的一项最新分析表明&#xff0c;到2030年&#xff0c;中国有望成为人工智能领域的全球领跑者。A12研究所对人工智能领域最具影响力的研究论文加以统计&#xff0c;并利用语…

MFC中树形控件的应用——电话簿

一、电话薄的代码如下&#xff1a; 1、 // PhoneDlg.cpp : implementation file //#include "stdafx.h" #include "Phone.h" #include "PhoneDlg.h" #include "AddDlg.h" #include "ModifyDlg.h" #ifdef _DEBUG #define ne…