Share via


ANALYZE TABLE

適用対象:check marked yes Databricks SQL check marked yes 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 ]

パラメーター

  • table_name

    分析するテーブルを識別します。 この名前には、テンポラル仕様またはパスを含めることはできません。 テーブルが見つからない場合、Azure Databricks で TABLE_OR_VIEW_NOT_FOUND エラーが発生します。

  • PARTITION 句

    必要に応じて、コマンドをパーティションのサブセットに制限します。

    この句は、Delta Lake のテーブルではサポートされません。

  • DELTA

    適用対象:check marked yes 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;