ANALYZE TABLE
適用対象: Databricks SQL Databricks Runtime
ANALYZE TABLE
ステートメントは、特定のテーブルについての、または指定されたスキーマ内のすべてのテーブルについての推定統計値を収集します。
これらの統計は、最適なクエリ プランを生成するためにクエリ オプティマイザーによって使用されます。
これらの統計は、データが変更されると古くなる可能性があるため、クエリに直接応答するためには使用されません。
古い統計は、クエリ オプティマイザーがクエリ プランを作成するときに引き続き役立ちます。
構文
ANALYZE TABLE table_name [ PARTITION clause ]
COMPUTE [ DELTA ] STATISTICS [ NOSCAN | FOR COLUMNS col1 [, ...] | FOR ALL COLUMNS ]
ANALYZE TABLES [ { FROM | IN } schema_name ] COMPUTE STATISTICS [ NOSCAN ]
パラメーター
-
分析するテーブルを識別します。 この名前には、テンポラル仕様またはパスを含めることはできません。 テーブルが見つからない場合、Azure Databricks で TABLE_OR_VIEW_NOT_FOUND エラーが発生します。
-
必要に応じて、コマンドをパーティションのサブセットに制限します。
この句は、Delta Lake のテーブルではサポートされません。
DELTA
適用対象: Databricks SQL Databricks Runtime 14.3 LTS 以降
Delta テーブルの統計情報の収集用に構成された列の Delta ログに保存された統計情報を再計算します。
DELTA
キーワードが指定されると、クエリ オプティマイザーの通常の統計情報は収集されません。Databricks では、テーブル内のすべての行の統計情報を更新するために、データのスキップ用の新しい列を設定した後に
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
を実行することをお勧めしています。 パフォーマンスを最適化するには、Delta ログの更新完了後にクエリ プランを更新するようにANALYZE TABLE table_name COMPUTE STATISTICS
を実行してください。[ NOSCAN | FOR COLUMNS col [, …] | FOR ALL COLUMNS ]
分析オプションが指定されていない場合、
ANALYZE TABLE
はテーブルの行数とサイズをバイト単位で収集します。NOSCAN
テーブルのサイズのみをバイト単位で収集します (テーブル全体をスキャンする必要はありません)。
FOR COLUMNS col [, …] | FOR ALL COLUMNS
指定した各列の列統計を収集するか、すべての列に対して列統計とテーブル統計を収集します。
列の統計は、
PARTITION
句との組み合わせではサポートされていません。
{ FROM
|
IN } schema_name分析するスキーマの名前を指定します。 スキーマ名を指定しない場合、現在のユーザーが分析する権限を持っている現在のスキーマ内にあるすべてのテーブルが、
ANALYZE TABLES
によって収集されます。
例
> CREATE TABLE students (name STRING, student_id INT) PARTITIONED BY (student_id);
> INSERT INTO students PARTITION (student_id = 111111) VALUES ('Mark');
> INSERT INTO students PARTITION (student_id = 222222) VALUES ('John');
> ANALYZE TABLE students COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes
... ... ...
> ANALYZE TABLE students COMPUTE STATISTICS;
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes, 2 rows
... ... ...
-- Note: ANALYZE TABLE .. PARTITION is not supported for Delta tables.
> ANALYZE TABLE students PARTITION (student_id = 111111) COMPUTE STATISTICS;
> DESC EXTENDED students PARTITION (student_id = 111111);
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Partition Statistics 432 bytes, 1 rows
... ... ...
OutputFormat org.apache.hadoop...
> ANALYZE TABLE students COMPUTE STATISTICS FOR COLUMNS name;
> DESC EXTENDED students name;
info_name info_value
-------------- ----------
col_name name
data_type string
comment NULL
min NULL
max NULL
num_nulls 0
distinct_count 2
avg_col_len 4
max_col_len 4
histogram NULL
> ANALYZE TABLES IN school_schema COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED teachers;
col_name data_type comment
-------------------- -------------------- -------
name string null
teacher_id int null
... ... ...
Statistics 1382 bytes
... ... ...
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes
... ... ...
> ANALYZE TABLES COMPUTE STATISTICS;
> DESC EXTENDED teachers;
col_name data_type comment
-------------------- -------------------- -------
name string null
teacher_id int null
... ... ...
Statistics 1382 bytes, 2 rows
... ... ...
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes, 2 rows
... ... ...
> ANALYZE TABLE some_delta_table COMPUTE DELTA STATISTICS;