説明
このステートメントは、テーブルまたはテーブルのパーティションの統計情報を収集するために使用されます。
構文
ANALYZE
TABLE [ schema. ]table_name
[ PARTITION (partition) | SUBPARTITION (subpartition) ]
{ COMPUTE STATISTICS [ for_clause ]
| ESTIMATE STATISTICS [ for_clause ]
[ SAMPLE integer { ROWS | PERCENTAGE } ]
}
for_clause:
FOR TABLE
| ALL COLUMNS
| COLUMNS column [, column]...
パラメータの説明
パラメータ |
説明 |
|---|---|
| schema | テーブルが属するスキーマを指定します。このパラメータを省略した場合、デフォルトで現在のスキーマが使用されます。 |
| table_name | 分析対象のテーブルを指定します。 |
| PARTITION | SUBPARTITION | 統計情報を収集するパーティションまたはサブパーティションを指定します。指定されたパーティションがパーティションの場合、そのパーティション内のすべてのサブパーティションの情報も同時に分析されます。 |
| compute_statistics_clause | COMPUTE STATISTICS を指定すると、分析対象の正確な統計情報を計算し、データディクショナリに格納できます。テーブルを分析する際、テーブルと列の統計情報が同時に集計されます。 |
| for_clause | 全体のテーブルを分析するか、特定の列のみを分析するかを指定します。
|
| estimate_statistics_clause | ESTIMATE STATISTICS を指定すると、分析対象の統計情報を推定し、データディクショナリに格納できます。 |
| SAMPLE | 統計情報の推定に使用される分析対象内のサンプリングデータ量を指定します。このパラメータを省略した場合、1064 行がサンプリングされます。
|
例
従業員情報テーブルを作成し、統計情報を収集します。
-- 部門テーブルを作成 CREATE TABLE departments ( dept_id NUMBER(4) PRIMARY KEY, dept_name VARCHAR2(30) NOT NULL, location VARCHAR2(50) ); -- 従業員テーブルを作成 CREATE TABLE employees ( emp_id NUMBER(6), emp_name VARCHAR2(50) NOT NULL, job_title VARCHAR2(50), manager_id NUMBER(6), hire_date DATE, salary NUMBER(8,2), dept_id NUMBER(4) NOT NULL, email VARCHAR2(100), CONSTRAINT pk_employees PRIMARY KEY (emp_id, dept_id), CONSTRAINT fk_dept FOREIGN KEY (dept_id) REFERENCES departments(dept_id) ) PARTITION BY RANGE (dept_id) ( PARTITION p_dept_10 VALUES LESS THAN (20), PARTITION p_dept_20 VALUES LESS THAN (30), PARTITION p_dept_other VALUES LESS THAN (MAXVALUE) ); -- インデックスを作成 CREATE INDEX idx_emp_dept ON employees(dept_id); CREATE INDEX idx_emp_name ON employees(emp_name); -- 従業員テーブルの完全な統計情報を収集 ANALYZE TABLE employees COMPUTE STATISTICS; -- 部門テーブルの完全な統計情報を収集 ANALYZE TABLE departments COMPUTE STATISTICS;特定のパーティションの統計情報を収集します。
-- 部門IDが20未満のパーティションの統計情報のみを収集 ANALYZE TABLE employees PARTITION(p_dept_10) COMPUTE STATISTICS;特定の列の統計情報を収集します。
-- 給与と入社日の統計情報のみを収集 ANALYZE TABLE employees COMPUTE STATISTICS FOR COLUMNS salary, hire_date;サンプリング方式で統計情報を収集します。
-- 1000行のデータをサンプリングして統計情報を収集 ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 1000 ROWS; -- データの5%をサンプリングして統計情報を収集 ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 5 PERCENTAGE;すべてのインデックス列の統計情報を収集します。
-- すべてのインデックス列の統計情報を収集し、ヒストグラムのバケット数を150に設定 ANALYZE TABLE employees COMPUTE STATISTICS FOR ALL INDEXED COLUMNS SIZE 150;すべての列の統計情報を収集します。
-- すべての列の統計情報を収集 ANALYZE TABLE employees COMPUTE STATISTICS FOR ALL COLUMNS SIZE 100;特定の列のヒストグラム統計情報を収集します。
-- 給与列のより詳細なヒストグラム統計を収集 ANALYZE TABLE employees COMPUTE STATISTICS FOR COLUMNS SIZE 254 salary;