通过TAB_COL_STATS查看统计信息

  使用配置
内容纲要

概要描述

本文主要介绍如何通过收集表的列统计信息,对TAB_COL_STATS的结果进行分析。


详细说明

首先我们创建样例表,并插入数据 (建表语句和插入语句见结尾内容),数据如下

file

执行analyze命令,对表的列信息进行统计收集

> ANALYZE TABLE default.emp COMPUTE STATISTICS FOR COLUMNS;

收集到的统计信息,需要到元数据库(txsql/kundb)进行查看:

> SELECT * FROM TAB_COL_STATS WHERE DB_NAME='default' and TABLE_NAME='emp' order by cs_id asc;

下面是TAB_COL_STATS表的列信息说明

列名 列说明
cs_id id
db_name 库名
table_name 表名
column_name 列名
column_type 列类型
tbl_id 表id
long_low_value 整数列存储整数最小值
long_high_value 整数列存储整数最大值
double_high_value float列存储float最小值
double_low_value float列存储float最大值
big_decimal_low_value decimal列存储decimal最小值
big_decimal_high_value decimal列存储decimal最大值
num_nulls null的数目
num_distincts distinct值的数目
avg_col_len string列的平均列长度
max_col_len string列的最大列长度
num_trues boolean列true的数目
num_falses boolean列false的数目
last_analyzed 最后统计时间

比如:

我想知道emp员工表里面,员工的最高薪资和最低薪资是多少?

  • sal字段是int类型,可以参考long_low_valuelong_high_value 字段获取到最小值和最大值。。

我想知道emp员工表里面,没有comm奖金的人数?

  • 可以参考NUM_NULLS字段获取到sal列为null的数量。

我想知道emp员工表里面,哪一列数据重复值较多?

  • 可以参考num_distincts字段获取到distinct值的数目,值越大,代表重复率越低;反之越高。

我想知道emp员工表里面,列长度的最大值和平均值?

  • 注意,avg_col_lenmax_col_len列仅对string类型的列有效。

还有很多其他重要的统计信息可以供分析,待大家深入挖掘其中的用法。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。