ANALYZE TABLE
適用対象: Databricks SQL Databricks Runtime
ANALYZE TABLE
ステートメントは、特定のテーブルについての、または指定されたスキーマ内のすべてのテーブルについての推定統計値を収集します。 これらの統計は、最適なクエリ プランを生成するためにクエリ オプティマイザーによって使用されます。
予測最適化は、ON Unity カタログのマネージド テーブル ANALYZE
自動的に実行されます。 Databricks では、データのメンテナンスを簡素化し、ストレージ コストを削減するために、すべての Unity Catalog マネージド テーブルに対して予測最適化を有効にすることをお勧めします。 「Unity Catalog 管理テーブルの予測最適化」を参照してください。
重要
ANALYZE
を使用した予測最適化はパブリック プレビュー段階です。 これには、書き込み中のインテリジェントな統計収集が含まれます。 このフォーム 使用して パブリック プレビューにサインアップします。
構文
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;