返回有关指定列的各种统计信息。这些统计信息与维护的供优化程序使用的列统计信息无关。
sa_column_stats ( [ tab_name ] [, col_name ] [, tab_owner ] [, max_rows ] )
tab_name 此可选 CHAR(128) 参数指定表的名称。如果未指定此参数,则计算所有表中所有列的统计信息。
col_name 此可选 CHAR(128) 参数指定要计算统计信息的列。如果未指定此参数,则计算指定表中所有列的统计信息。
tab_owner 此可选 CHAR(128) 参数指定表的所有者。如果未指定此参数,则数据库服务器使用与指定的 tab_name 相匹配的第一个表的所有者。
max_rows 此可选 INTEGER 参数指定要用于计算的行数。如果未指定此参数,则缺省情况下使用 1000 行。指定为 0 则表示数据库服务器根据表中的所有行计算比率。
除 table_owner、table_name 和 column_name 外,对于非字符串列,结果集中的所有值均为 NULL。此外对于空表,num_rows_processed 和 num_values_compressed 为 0,而所有其它值为 NULL。
列名 | 数据类型 | 说明 |
---|---|---|
table_owner | CHAR(128) | 表的所有者。 |
table_name | CHAR(128) | 表名。 |
column_name | CHAR(128) | 列名称。 |
num_rows_processed | INTEGER | 读取的用来计算统计信息的总行数。 |
num_values_compressed | INTEGER | 在列中被压缩的值的数量。如果列未压缩,则该值为 0。 |
avg_compression_ratio | DOUBLE | 平均压缩率,表示为减少大小的百分比,针对列中的压缩值。如果列未压缩,则该值为 NULL。 |
avg_length | DOUBLE | 列中所有非 NULL 字符串的平均长度。 |
stddev_length | DOUBLE | 列中所有非 NULL 字符串长度的标准差。 |
min_length | INTEGER | 列中非 NULL 字符串的最小长度。 |
max_length | INTEGER | 列中字符串的最大长度。 |
avg_uncompressed_length | DOUBLE | 列中所有未压缩的非 NULL 字符串的平均长度。 |
stddev_uncompressed_length | DOUBLE | 列中所有未压缩的非 NULL 字符串长度的标准差。 |
min_uncompressed_length | INTEGER | 列中所有未压缩的非 NULL 字符串的最小长度。 |
max_uncompressed_length | INTEGER | 列中所有未压缩的非 NULL 字符串的最大长度。 |
数据库服务器确定与指定的所有者、表和列名相匹配的列,然后对于每一列,计算每个指定列中的数据的统计信息。缺省情况下,数据库服务器仅使用前 1000 行的数据。
对于 avg_compression_ratio,值不能大于或等于 100,然而如果将高度不可压缩的数据(例如已压缩的数据)插入到压缩列中,该值可能小于 0。值越高表示压缩越好。例如,如果返回值为 80,则压缩后数据的大小比未压缩数据的大小小 80%。
需要 DBA 权限
无
在此示例中,在 SELECT 语句中使用 sa_column_stats 系统过程来确定数据库中压缩率最高的那些列:
SELECT * FROM sa_column_stats() WHERE num_values_compressed > 0 ORDER BY avg_compression_ratio desc; |
在此示例中,将选择范围从上一个示例缩小到由 bsmith 拥有的表:
SELECT * FROM sa_column_stats( tab_owner='bsmith' ) WHERE num_values_compressed > 0 ORDER BY avg_compression_ratio desc; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |