二、列统计信息

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中收集表与列统计信息相关推荐

  1. 学生信息数据库中的表

    学生表,课程表,成绩表,教师表,讲课表的表结构和样本数据.\n\n数据库(stusys)的表结构和样本数据 1:打开MySQL Workbench,点击MySQL Con 2:创建数据库 3:选择数据 ...

  2. mysql中列的增删_mysql中怎么增删一列

    使用mysql数据库--增 插入一条数据 首先,还是先解释一下如何使用数据库,按照上面的方法就可以连接数据库了.这里要解释两件事情. 1.执行sql语句返回的reCount是什么? 这个recount ...

  3. python获取excel某一列-Python从Excel中读取日期一列的方法

    如下所示: import xlrd import datetime file=u"伏特加.xls"#注意读中文文件名稍微处理一下 data=xlrd.open_workbook(f ...

  4. matlab矩阵对某一列求和,将矩阵中的每一列与另一列中的对应行相乘,然后在Matlab中求和...

    可以说我有矩阵A = [1 2; 3 4], B = [4 3; 2 1]. 我想将矩阵A ([1; 3], [2; 4])中的每一列乘以矩阵B ([4 3], [2 1])中的相应行,并对得出的矩阵 ...

  5. php 取出多重数组中的一列_PHP获取数组中指定的一列实例

    对于一个多维数组(以二维数组为例),经常需要获取到其中的一列,比如有几条用户数据,是一个二维数组,现在需要获取到这几个用户的名字,可以有多种方法实现: $arr = array( array( 'id ...

  6. python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解

    用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...

  7. mysql shell 所有表_删除mysql数据库中所有表的shell脚本

    分享一个可以删除mysql中所有表的shell脚本,代码如下: 复制代码 代码示例: #!/bin/bash # 删除mysql中所有表 # 示例: # Usage: ./script user pa ...

  8. java获取异常信息_Python中获取异常(Exception)信息

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序 ...

  9. android中获取应用程序(包)的信息,Android中获取应用程序(包)的信息PackageManager的使用(一).doc...

    Android中获取应用程序(包)的信息PackageManager的使用(一) 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等 ...

  10. python怎么读取excel某一列-Python从Excel中读取日期一列的方法

    如下所示: import xlrd import datetime file=u"伏特加.xls"#注意读中文文件名稍微处理一下 data=xlrd.open_workbook(f ...

最新文章

  1. php header调试,yii2打log
  2. Android开源音视频播放器
  3. ELK学习笔记之Kibana权限控制和集群监控
  4. SLAM常用数据集(2)
  5. 嵌入网站的挖矿代码——Monerominer.rocks
  6. Paw —— 比Postman更舒服的API利器
  7. C# 中的readonly属性
  8. C#是一种垂死的语言吗?
  9. 第6章 访问权限控制
  10. 国内各大免费邮箱的smtp
  11. c语言数组的地址传递,c语言函数传递数组_c语言函数数组地址传递没有输出
  12. uniapp 解决切换横竖屏后内容错乱的问题
  13. JAVA重写和重载的区别
  14. 火山火花代码编辑框(火花编辑框)Scintilla代码编辑框案例教程
  15. Packet Tracer 5.0建构CCNA实验攻略——帧中继Frame Relay
  16. 雪球 feed流爬虫
  17. 爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)
  18. Git首次提交代码到远程仓库时,出现fatal: unable to access ‘https://github.com/xxx/xxx.git/‘
  19. MAPGIS快捷键大全
  20. 只能输入零和非零开头的数字的正则表达式

热门文章

  1. 整理C知识点--函数(重点)
  2. C++ 对象的内存布局【转】
  3. 甘肃银行借助HDIM打造综合数据保护平台
  4. uva 11234 Expressions
  5. Centos 6.4 开启 VNC
  6. Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 ....
  7. 桌面养花-DesktopPlant v2.3.12原创汉化版
  8. 要管理组策略 您必须以域用户账户登录此计算机,让AD域用户账户只能登陆管理员指定的客户端计算机...
  9. vue 修改路由名字_Vue 路由设置title
  10. java中的方法与方法之间的关键_Java中包与包之间方法的调用及其关键字区分(基础)...