oracle 表列统计信息,Oracle中收集表与列统计信息
二、列统计信息
SELECT COLUMN_NAME AS "NAME",
NUM_DISTINCT AS "#DST",
LOW_VALUE,
HIGH_VALUE,
DENSITY AS "DENS",
NUM_NULLS AS "#NULL",
AVG_COL_LEN AS "AVGLEN",
HISTOGRAM,
NUM_BUCKETS
FROM USER_TAB_COL_STATISTICS
WHERE TABLE_NAME = 'T';
NAME #DST LOW_VALUE HIGH_VALUE DENS #NULL AVGLEN HISTOGRAM NUM_BUCKETS
---------- ---------- -------------------- -------------------- ---------- ---------- ------ --------------- -----------
ID 1000 C102 C20B .001 0 4 NONE 1
VAL1 450 C102 C22D4B .002513356 481 3 HEIGHT BALANCED 234
VAL2 6 C20202 C20207 .0005 0 4 FREQUENCY 6
VAL3 6 C20202 C20207 .0005 0 4 FREQUENCY 6
PAD 1000 202523422F3B40542B2D 7E6664433E4F2C2E515C .001 0 251 HEIGHT BALANCED 254
7276252F3C7035494769 3570536E7D7B303D546B
323F275E773236205A4A 4D50244C42367A76536F
2638 6B6A
这里几列统计信息解释一下:
NUM_DISTINCT:该列中唯一值的数量。
LOW_VALUE:该列的最小值。显示为内部存储格式。对于字符串列,只存储前32字节。
HIGH_VALUE:该列的最大值。显示为内部存储格式。对于字符串列,只存储前32字节。
DENSITY:0到1之间的一个小数。接近0表示对于该列的过滤操作能去掉大多数的行。接近1表示对于该列的过滤操作起不到什么作用。如果没有直方图,DENSITY=1/NUM_DISTINCT。
HISTOGRAM:表明是否有直方图信息,如果有,是什么类型?FREQUENCY表示频率类型,HEIGHT BALANCED表示平均分布类型;如果没有,则为NONE。
NUM_BUCKETS:直方图里的桶数。它表示一组同类的数值放在一起。直方图最少由一个桶组成。如果没有直方图,则为1,最大桶数为254。
这里的LOW_VALUE和HIGH_VALUE都是内部格式,所以必须转换为可读懂的格式,有两种方法。
①使用工具包utl_raw提供的函数cast_to_binary_double、cast_to_binary_float、cast_to_binary_integer、cast_to_number、cast_to_nvarchar2、cast_to_raw和cast_to_varchar2。这些函数就是把内部存储格式转换为实际值。
SELECT UTL_RAW.CAST_TO_NUMBER(LOW_VALUE) AS LOW_VALUE,
UTL_RAW.CAST_TO_NUMBER(HIGH_VALUE) AS HIGH_VALUE
FROM USER_TAB_COL_STATISTICS
WHERE TABLE_NAME = 'T'
AND COLUMN_NAME = 'VAL1';
LOW_VALUE
HIGH_VALUE
1
4474
②使用dbms_stats提供的过程convert_raw_value、convert_raw_value_nvarchar和convert_raw_value_rowid。该过程不能直接在SQL语句中使用,通常只用于PL/SQL程序中。
-- Created on 2013/12/4 by LENOVO
DECLARE
L_LOW_VALUE USER_TAB_COL_STATISTICS.LOW_VALUE%TYPE;
L_HIGH_VALUE USER_TAB_COL_STATISTICS.HIGH_VALUE%TYPE;
L_VAL1 T.VAL1%TYPE;
BEGIN
SELECT LOW_VALUE, HIGH_VALUE
INTO L_LOW_VALUE, L_HIGH_VALUE
FROM USER_TAB_COL_STATISTICS
WHERE TABLE_NAME = 'T'
AND COLUMN_NAME = 'VAL1';
DBMS_STATS.CONVERT_RAW_VALUE(L_LOW_VALUE, L_VAL1);
DBMS_OUTPUT.PUT_LINE('low_value: ' || L_VAL1);
DBMS_STATS.CONVERT_RAW_VALUE(L_HIGH_VALUE, L_VAL1);
DBMS_OUTPUT.PUT_LINE('high_value: ' || L_VAL1);
END;
low_value: 1
high_value: 4474
oracle 表列统计信息,Oracle中收集表与列统计信息相关推荐
- 学生信息数据库中的表
学生表,课程表,成绩表,教师表,讲课表的表结构和样本数据.\n\n数据库(stusys)的表结构和样本数据 1:打开MySQL Workbench,点击MySQL Con 2:创建数据库 3:选择数据 ...
- mysql中列的增删_mysql中怎么增删一列
使用mysql数据库--增 插入一条数据 首先,还是先解释一下如何使用数据库,按照上面的方法就可以连接数据库了.这里要解释两件事情. 1.执行sql语句返回的reCount是什么? 这个recount ...
- python获取excel某一列-Python从Excel中读取日期一列的方法
如下所示: import xlrd import datetime file=u"伏特加.xls"#注意读中文文件名稍微处理一下 data=xlrd.open_workbook(f ...
- matlab矩阵对某一列求和,将矩阵中的每一列与另一列中的对应行相乘,然后在Matlab中求和...
可以说我有矩阵A = [1 2; 3 4], B = [4 3; 2 1]. 我想将矩阵A ([1; 3], [2; 4])中的每一列乘以矩阵B ([4 3], [2 1])中的相应行,并对得出的矩阵 ...
- php 取出多重数组中的一列_PHP获取数组中指定的一列实例
对于一个多维数组(以二维数组为例),经常需要获取到其中的一列,比如有几条用户数据,是一个二维数组,现在需要获取到这几个用户的名字,可以有多种方法实现: $arr = array( array( 'id ...
- python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解
用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...
- mysql shell 所有表_删除mysql数据库中所有表的shell脚本
分享一个可以删除mysql中所有表的shell脚本,代码如下: 复制代码 代码示例: #!/bin/bash # 删除mysql中所有表 # 示例: # Usage: ./script user pa ...
- java获取异常信息_Python中获取异常(Exception)信息
异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序 ...
- android中获取应用程序(包)的信息,Android中获取应用程序(包)的信息PackageManager的使用(一).doc...
Android中获取应用程序(包)的信息PackageManager的使用(一) 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等 ...
- python怎么读取excel某一列-Python从Excel中读取日期一列的方法
如下所示: import xlrd import datetime file=u"伏特加.xls"#注意读中文文件名稍微处理一下 data=xlrd.open_workbook(f ...
最新文章
- php header调试,yii2打log
- Android开源音视频播放器
- ELK学习笔记之Kibana权限控制和集群监控
- SLAM常用数据集(2)
- 嵌入网站的挖矿代码——Monerominer.rocks
- Paw —— 比Postman更舒服的API利器
- C# 中的readonly属性
- C#是一种垂死的语言吗?
- 第6章 访问权限控制
- 国内各大免费邮箱的smtp
- c语言数组的地址传递,c语言函数传递数组_c语言函数数组地址传递没有输出
- uniapp 解决切换横竖屏后内容错乱的问题
- JAVA重写和重载的区别
- 火山火花代码编辑框(火花编辑框)Scintilla代码编辑框案例教程
- Packet Tracer 5.0建构CCNA实验攻略——帧中继Frame Relay
- 雪球 feed流爬虫
- 爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)
- Git首次提交代码到远程仓库时,出现fatal: unable to access ‘https://github.com/xxx/xxx.git/‘
- MAPGIS快捷键大全
- 只能输入零和非零开头的数字的正则表达式
热门文章
- 整理C知识点--函数(重点)
- C++ 对象的内存布局【转】
- 甘肃银行借助HDIM打造综合数据保护平台
- uva 11234 Expressions
- Centos 6.4 开启 VNC
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 ....
- 桌面养花-DesktopPlant v2.3.12原创汉化版
- 要管理组策略 您必须以域用户账户登录此计算机,让AD域用户账户只能登陆管理员指定的客户端计算机...
- vue 修改路由名字_Vue 路由设置title
- java中的方法与方法之间的关键_Java中包与包之间方法的调用及其关键字区分(基础)...