説明
このステートメントは、テーブルまたはテーブルパーティションの統計情報を収集するために使用されます。
構文
ANALYZE TABLE table_name UPDATE HISTOGRAM ON column_name_list WITH INT_NUM BUCKETS;
テナントレベルの構成パラメータ enable_sql_extension が TRUE の場合、Oracleモードで使用される構文を使用できます。以下に示します:
ANALYZE TABLE table_name [use_partition] COMPUTE STATISTICS [ for_clause ];
use_partition:
PARTITION (parition_name [,partition_name,....])
| SUBPARTITION(subpartition_name, [,subpartition_name,...])
analyze_statistics_clause:
COMPUTE STATISTICS [analyze_for_clause]
| ESTIMATE STATISTICS [analyze_for_clause] [SAMPLE INTNUM {ROWS | PERCENTAGE}]
analyze_for_clause:
FOR TABLE
| FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]
| FOR COLUMNS [size clause] column [size_clause] [,column [size_clause]...]
size_clause:
SIZE integer
| SIZE REPEAT
| SIZE AUTO
| SIZE SKEWONLY
column:
column_name
| (column_name [, column_name])
パラメータの説明
| パラメータ | 説明 |
|---|---|
| table_name | 分析対象のテーブルを指定します。 |
| INT_NUM | 整数で、バケットの数を示します。バケットの値については、method_optを参照してください。 |
| use_partition | パーティション名を指定します。テーブル名として指定された場合、パーティション統計情報は収集されません。 |
| compute_statistics_clause | COMPUTE STATISTICS を指定すると、分析対象の正確な統計情報を計算し、データディクショナリに格納できます。テーブルを分析する際には、テーブルと列の両方の統計情報が同時に集計されます。 |
| for_clause | テーブル全体を分析するか、特定の列のみを分析するかを指定します。
|
| estimate_statistics_clause | ESTIMATE STATISTICS を指定すると、分析対象の統計情報を推定し、データディクショナリに格納できます。 |
| SAMPLE | 統計情報の推定に使用する分析対象内のサンプリングデータ量を指定します。このパラメータを省略した場合、データベースオプティマイザーが自動的に適切な比率でサンプリングを行います。
|
例
testテーブルの統計情報を収集し、列のバケット数を30に設定します。
obclient> CREATE TABLE test (c1 NUMBER(30) PRIMARY KEY,c2 VARCHAR(50));
Query OK, 0 rows affected
obclient> ANALYZE TABLE test UPDATE HISTOGRAM ON c1,c2 with 30 buckets;
Query OK, 0 rows affected
- テナントレベルの構成パラメータ
enable_sql_extensionがTRUEの場合、Oracleモードの構文を使用してユーザーuser01のテーブルtestの統計情報を収集し、すべての列のバケット数を128に設定します。
obclient> ALTER SYSTEM SET enable_sql_extension = TRUE;
Query OK, 0 rows affected
obclient> ANALYZE TABLE test COMPUTE STATISTICS FOR ALL COLUMNS SIZE 128;
Query OK, 0 rows affected