2.1.1.1_15 Oracle 静态数据字典之15 TAB_COLUMNS 表字段【T1】


相关链接


1 静态数据字典

  原文
  这类数据字典主要是由表和视图组成。应该注意的是,数据字典中的表是不能直接来访问的,但是可以访问数据字典中的视图。静态数据字典中的视图分为三类,它们分别为:DBA_、ALL_、USER_。

  • DBA_TAB_COLUMNS describes the columns of all tables, views, and clusters in the database. Its columns are the same as those in “ALL_TAB_COLUMNS”. To gather statistics for this view, use the SQL ANALYZE statement.
               描述数据库中所有表、视图和集群的列。
               表结构与"ALL_TABLE_COLUMNS"一致。
               要为这个视图收集统计信息,请使用SQL ANALYZE语句。
  • ALL_TAB_COLUMNS describes the columns of the tables, views, and clusters accessible to the current user. To gather statistics for this view, use the ANALYZE SQL statement or the DBMS_STATS package.
               描述当前用户可访问的表、视图和集群的列。
               要为这个视图收集统计信息,可以使用ANALYZE SQL语句或DBMS_STATS包。
  • USER_TAB_COLUMNS describes the columns of the tables, views, and clusters owned by the current user. Its columns (except for OWNER) are the same as those in “ALL_TAB_COLUMNS”. To gather statistics for this view, use the ANALYZE SQL statement.
               当前用户所拥有的表、视图和集群的列。此视图没有OWNER字段

2 ALL_TAB_COLUMNS 数据字典

  • DBA_TAB_COLUMNSALL_TAB_COLUMNS 表结构完全一致 , USER_TAB_COLUMNS 没有OWNER字段

Ser = Serial :表示字段序号
An= Analyze :表示该字段是否需要通过分析表获取最新信息

SerAnColumnDataTypeNullDescription
1OWNER
VARCHAR2(30)NOT NULLOwner of the table, view, or cluster
表、视图或集群的拥有者
2TABLE_NAME
表名
VARCHAR2(30)NOT NULLName of the table, view, or cluster
表、视图或集群的名称
3COLUMN_NAME
字段名
VARCHAR2(30)NOT NULLColumn name
列名
4DATA_TYPE
字段类型
VARCHAR2(106)Datatype of the column
列的数据类型
5DATA_TYPE_MOD
???
VARCHAR2(3)Datatype modifier of the column
列的数据类型修饰符?
6DATA_TYPE_OWNER
???(库名)
VARCHAR2(30)Owner of the datatype of the column
列的数据类型的所有者
7DATA_LENGTH
长度
NUMBERNOT NULLLength of the column (in bytes)
列长度(以字节为单位)
8DATA_PRECISION
精度
NUMBERDecimal precision for NUMBER datatype; binary precision for FLOAT datatype; NULL for all other datatypes
数字数据类型的十进制精度;浮点数据类型的二进制精度;其他数据类型为空
9DATA_SCALE
标度
NUMBERDigits to the right of the decimal point in a number
一个数中小数点右边的数字
10NULLABLE
允许为空
VARCHAR2(1)Indicates whether a column allows NULLs. The value is N if there is a NOT NULL constraint on the column or if the column is part of a PRIMARY KEY. The constraint should be in an ENABLE VALIDATE state.
指示列是否允许空值。如果列上存在NOT NULL约束,或者列是主键的一部分,则值为N。约束应该处于启用验证状态。
11COLUMN_ID
字段序号
NUMBERSequence number of the column as created
创建的列的序列号
12DEFAULT_LENGTH
默认值字节数
NUMBERLength of the default value for the column
列的默认值的长度(字节数)在这里插入图片描述
14NUM_DISTINCT
列去重后数量
NUMBERNumber of distinct values in the columnFoot 1
列中不同值的数目
15LOW_VALUE
列上最小值(低位)
RAW(32)Low value in the column Footref 1
列中的最小值
16HIGH_VALUE
列上最大值(高位)
RAW(32)High value in the columnFootref 1
列中的最大值
17DENSITY
密度
NUMBERDensity of the columnFootref 1
列(柱)密度∈[0,1]
满足公式 【17-DENSITY】*【14-NUM_DISTINCT】= 1
即列(柱)密度越大,列中去重后的值越少
18NUM_NULLS
NULL值个数
NUMBERNumber of NULLs in the column
列中的NULL值数量
19NUM_BUCKETS
桶数
NUMBERNumber of buckets in the histogram for the column
Note: The number of buckets in a histogram is specified in the SIZE parameter of the ANALYZE SQL statement. However, Oracle Database does not create a histogram with more buckets than the number of rows in the sample. Also, if the sample contains any values that are very repetitious, Oracle Database creates the specified number of buckets, but the value indicated by this column may be smaller because of an internal compression algorithm.
列的(统计)直方图中的桶数
注解:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。但是,Oracle数据库不会创建一个桶数多于样例中行数的柱状图。另外,如果示例中包含重复非常多的值,Oracle数据库将创建指定数量的桶,但是由于使用了内部压缩算法,此列所指示的值可能会更小。

buckets ∈[1,254] , buckets = 1 时没有直方图
20LAST_ANALYZED
最近ANALYZE日期
DATEDate on which this column was most recently analyzed
列最近被分析的日期
21SAMPLE_SIZE
样本大小
NUMBERSample size used in analyzing this column
用于分析这一列的样本大小
22CHARACTER_SET_NAME
字符集名称
VARCHAR2(44)Name of the character set:  字符集名称
 ● CHAR_CS
 ● NCHAR_CS
23CHAR_COL_DECL_LENGTH
字符类型列的声明长度
NUMBERDeclaration length of the character type column
字符类型列的声明长度
24GLOBAL_STATS
全球状态
VARCHAR2(3)For partitioned tables, indicates whether column statistics were collected for the table as a whole (YES) or were estimated from statistics on underlying partitions and subpartitions (NO)
对于分区表,指示是从整体上收集表的列统计信息(YES),还是从基础分区和子分区的统计信息中估计的(NO)
25USER_STATS
用户状态
VARCHAR2(3)Indicates whether statistics were entered directly by the user (YES) or not (NO)
指示统计信息是否由用户直接输入(YES)或否(NO)
26AVG_COL_LEN
列的平均字节长度
NUMBERAverage length of the column (in bytes)
列的平均长度(以字节为单位)
27CHAR_LENGTH
字符类型长度
NUMBERDisplays the length of the column in characters. This value only applies to the following datatypes:
以字符显示列的长度。此值仅适用于以下数据类型:
 ● CHAR
 ● VARCHAR2
 ● NCHAR
 ● NVARCHAR
28CHAR_USED
字符类型使用(的定义语言)
NUMBERIndicates that the column uses BYTE length semantics (B) or CHAR length semantics ©, or whether the datatype is not any of the following (NULL):
指示列使用字节长度语义(B)或字符长度语义©,或者数据类型是否不属于下列任何一种(NULL):
 ● CHAR
 ● VARCHAR2
 ● NCHAR
 ● NVARCHAR2
29V80_FMT_IMAGE
V80 图像格式
NUMBERIndicates whether the column data is in release 8.0 image format (YES) or not (NO)
指示列数据是否采用release 8.0图像格式(YES)或not (NO)
30DATA_UPGRADED
数据升级
NUMBERIndicates whether the column data has been upgraded to the latest type version format (YES) or not (NO)
指示列数据是否已升级为最新类型版本格式(YES)或未(NO)
31HISTOGRAM
(统计)直方图类型
NUMBERIndicates existence/type of histogram:
表示直方图的存在/类型:
 ● NONE
 ● FREQUENCY    宽度平衡直方图频率直方图
 ● HEIGHT BALANCED 高度平衡直方图(平均分布类型)

3 直方图(histograms)

  • 概述
      在oracle中直方图是用来描述数据在列中的分布情况。
      每一个sql在被执行前都要经过优化这一步骤,那么在优化器给出一个最优执行计划之优化器应该要知道sql语句中所引用的底层对象的详细信息
      判断统计信息是否准确,只需要比较一下表记录的count 和 num_rows 值就知道了。 如果是一致的,就说明是最新的,如果不一致,可能就需要分析了。
SerAnColumnDataTypeNullDescription
14NUM_DISTINCT
列去重后数量
NUMBERNumber of distinct values in the columnFoot 1
列中不同值的数目
15LOW_VALUE
列上最小值(低位)
RAW(32)Low value in the column Footref 1
列中的最小值
16HIGH_VALUE
列上最大值(高位)
RAW(32)High value in the columnFootref 1
列中的最大值
17DENSITY
密度
NUMBERDensity of the columnFootref 1
列(柱)密度∈[0,1]
18NUM_NULLS
NULL值个数
NUMBERNumber of NULLs in the column
列中的NULL值数量
26AVG_COL_LEN
列的平均字节长度
NUMBERAverage length of the column (in bytes)
列的平均长度(以字节为单位)
19NUM_BUCKETS
桶数
NUMBERNumber of buckets in the histogram for the column
Note: The number of buckets in a histogram is specified in the SIZE parameter of the ANALYZE SQL statement. However, Oracle Database does not create a histogram with more buckets than the number of rows in the sample. Also, if the sample contains any values that are very repetitious, Oracle Database creates the specified number of buckets, but the value indicated by this column may be smaller because of an internal compression algorithm.
列的(统计)直方图中的桶数
注解:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。但是,Oracle数据库不会创建一个桶数多于样例中行数的柱状图。另外,如果示例中包含重复非常多的值,Oracle数据库将创建指定数量的桶,但是由于使用了内部压缩算法,此列所指示的值可能会更小。

buckets ∈[1,254] , buckets = 1 时没有直方图
31HISTOGRAM
(统计)直方图类型
NUMBERIndicates existence/type of histogram:
表示直方图的存在/类型:
 ● NONE
 ● FREQUENCY    宽度平衡直方图频率直方图
 ● HEIGHT BALANCED 高度平衡直方图(平均分布类型)
在12c后引入了
TOP-Frequency
 ● Hybrid

3.1 密度 density (Ser 17)

  • 概述: 为连接查询( 如A.CLO1=B.CLO1) 和条件查询(如 WHERE A.CLO1 = 1)提供选择性
       列的选择性是用来决定执行计划的一个重要部分。
  • 取值范围: [0,1]
    • 数值越高,选择性越差(unselective)
    • 数值越低,选择性越高(highly selective)
      当列的选择性越高,WHERE查询时返回的rows 越少,这样查询的效率就高。
  • 作用:
      当查询使用这个列作为 WHERE条件时 ,CBO(Cost Based Optimizer)会使用这个列的density统计信息来评估要返回的行数

3.1.1 计算方式

  • 1·没有直方图或 7.3版本之前
     满足公式 【17-DENSITY】*【14-NUM_DISTINCT】= 1
      即列(柱)密度越大,列中 COUNT(DISTINCT) 值越少
       列(柱)密度越小,列中 COUNT(DISTINCT) 值越多
    例:

    在这里插入图片描述

20/09/04

M

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYSYTEM进行查询。几个重要的或者视图如下: v$controlfile:控制文件的信息; v$datafile:数据文件的信息; v$log:日志文件的信息; v$process:处理器的信息; v$session:会话信息; v$transaction:事务信息; v$resource:资源信息; v$sga:系统全局区的信息。 上面的视图名中的‘v$’,只是视图名字中的字符。类似于上面的视图或还有很多,位于: $ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL文件中。 这些视图或可以在SQLPLUS中用SELECT语句进行查询。 2.数据字典视图 和列 DBA_TABLES、ALL_TABLES和USER_TABLES显示了有关数据库的一般信息。 DBA_TAB_COLUMNS、ALL_TAB_COLUMNS和USER_TAB_COLUMNS显示了每个数据库的列的信息。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括。 完整性约束 DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST显示有关约束的一般信息。 DBA_CONS_COLUMNS、ALL_CONS_COLUMNS和USER_CONS_COLUMNS显示有关列的相关约束的一般信息。 视图 DBA_VIEWS、ALL_VIEWS和USER_VIEWS。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括视图。 序列 DBA_SEQUENCES、ALL_SEQUENCES和USER_SEQUENCES。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括序列。 同义词 DBA_SYNONYMS、ALL_SYNONYMS和USER_SYNONYMS。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括同义词。 索引 DBA_INDEXS、ALL_INDEXS、USER_INDEXS、DBA_IND_COLUMNS、ALL_IND_COLUMNS和USER_IND_COLUMNS。 用户 DBA_USERS。 角色 DBA_ROLES。 空间定额 DBA_TS_QUOTAS。 配置 DBA_PROFILES。 空间 DBA_TABLESPACES。 数据文件 DBA_DATA_FILES。 段 DBA_SEGMENTS、USER_SEGMENT。 回滚段 DBA_ROLLBACK_SEGS、V$ROLLNAME、V$ROLLSTAT。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值