Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 系统对象 » 系统过程 » 按字母顺排序的系统过程列表

 

sa_column_stats 系统过程

返回有关指定列的各种统计信息。这些统计信息与维护的供优化程序使用的列统计信息无关。

语法
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;