#ANALYZE TABLE

# 通用描述

ANALYZE TABLE用于收集分布式部署中的表、AC或分区的统计信息,与之对应的是DBMS_STATS高级包的GATHER_TABLE_STATS程序(单机部署中使用)。

# 语句定义

analyze table::=

syntax
ANALYZE TABLE table_name PARTITION partition_value ESTIMATE_PERCENT estimate_value BLOCK_SAMPLE block_value METHOD_OPTION method_clause PARALLEL_DEGREE parallel_value GRANULARITY ' graularity_value ' INDEX_CASCADE index_value

method_clause::=

syntax
' FOR ALL COLUMNS size_clause FOR COLUMNS ( column_name size_clause , ) '

size_clause::=

syntax
SIZE integer AUTO

# partition

按指定的分区名收集统计信息,可省略,则partition_value默认为NULL,表示不按分区,收集整张表信息。

# estimate_percent

指定统计的采样率,取值为0或在[0.0001,1]之间。取值为0时表示由数据库自动决定采样率,为NULL或1时表示全量收集。可省略,省略则默认为1,表示全量收集。

# block_sample

指定是否采用块级采样,预留字段,恒为TRUE,可省略。

# method_option

指定列统计信息选项,可省略,则默认为FOR ALL COLUMNS SIZE AUTO。

  • FOR ALL COLUMNS:收集所有列的统计信息。

  • FOR COLUMNS:收集指定列的统计信息,多列以,分隔。

# size_clause

指定直方图信息,可省略,则默认为SIZE AUTO。

  • integer:直方图的bucket数量,范围为[1,2048]。
  • AUTO: 由系统决定是否生成直方图。

# parallel_degree

指定并行度,对于大表,增大并行度可以提升统计信息收集的效率,parallel_value最大可以为128。可省略,则parallel_value默认为1。

# granularity

指定分区统计粒度,可省略,则graularity_value默认为GLOBAL。

  • ALL:收集表和分区。
  • GLOBAL:只收集表。
  • GLOBAL AND PARTITION:收集表和分区。
  • PARTITION:只收集分区。
  • AUTO:由分区的类型自动决定。
  • SUBPARTITION:收集二级分区(预留字段)。

# index_cascade

指定是否收集索引统计信息(true/false),可省略,则index_value默认为false。

示例

ANALYZE TABLE branches PARTITION NULL ESTIMATE_PERCENT 0.5 BLOCK_SAMPLE true 
INDEX_CASCADE true METHOD_OPTION 'FOR COLUMNS (branch_no SIZE AUTO,area_no SIZE 1)' 
GRANULARITY 'AUTO' PARALLEL_DEGREE 1;