ANALYZE - Amazon Redshift

ANALYZE

クエリプランナーで使用するテーブル統計を更新します。

必要な権限

ANALYZE に必要な権限を以下に示します。

  • スーパーユーザー

  • ANALYZE の権限を持つユーザー

  • 関連付けの所有者

  • テーブルの共有先であるデータベース所有者

構文

ANALYZE [ VERBOSE ] [ [ table_name [ ( column_name [, ...] ) ] ] [ PREDICATE COLUMNS | ALL COLUMNS ]

パラメータ

VERBOSE

ANALYZE オペレーションに関する進捗情報メッセージを返す句。このオプションは、テーブルを指定しないときに役立ちます。

table_name

一時テーブルを含む、特定のテーブルを分析できます。テーブルをそのスキーマ名で修飾することができます。また、table_name を指定して単一のテーブルを分析することもできます。1 つの ANALYZE table_name ステートメントで複数の table_name を指定することはできません。table_name 値を指定しなかった場合、システムカタログの永続テーブルを含め、現在接続されているデータベースのすべてのテーブルが分析されます。最後の ANALYZE 以降に変更された行の割合が分析のしきい値よりも低い場合、Amazon Redshift はテーブルの分析をスキップします。詳細については、「分析のしきい値」を参照してください。

Amazon Redshift のシステムテーブル (STL テーブルと STV テーブル) を分析する必要はありません。

column_name

table_name を指定する場合、テーブルの 1 つ以上の列を指定することもできます (括弧内に列をカンマ区切りリストとして指定します)。列リストが指定された場合、リストされている列のみが分析されます。

PREDICATE COLUMNS | ALL COLUMNS

ANALYZE に述語列のみを含めるかどうかを示す句。PREDICATE COLUMNS を指定すると、前のクエリで述語として使用されている列、または述語として使用される可能性が高い列のみが分析されます。すべての行を分析するには、ALL COLUMNS を指定します。デフォルトは ALL COLUMNS です。

次のいずれかが当てはまる場合、列は述語列のセットに含まれます。

  • この列は、フィルタ、結合条件、または GROUP BY 句の一部としてクエリで使用されています。

  • 列が分散キーです。

  • 列はソートキーの一部です。

例えば、テーブルがまだ照会されていないなどの理由で列が述語列としてマークされていない場合は、PREDICATE COLUMNS が指定されていてもすべての列が分析されます。述語の列の詳細については、テーブルを分析するを参照してください。

使用に関する注意事項

Amazon Redshift では、以下のコマンドを使用して作成したテーブルで自動的に ANALYZE を実行します。

  • CREATE TABLE AS

  • CREATE TEMP TABLE AS

  • SELECT INTO

外部テーブルを分析することはできません。

最初に作成したとき、これらのテーブルに ANALYZE コマンドを実行する必要はありません。変更する場合は、他のテーブルと同じように分析する必要があります。

分析のしきい値

処理時間を短縮し、システム全体のパフォーマンスを向上させるために、最後の ANALYZE コマンドの実行以降に変更された行の割合が、analyze_threshold_percent パラメータで指定された分析のしきい値よりも低い場合、Amazon Redshift はテーブルの分析をスキップします。デフォルトでは、analyze_threshold_percentは 10 です。現在のセッションの analyze_threshold_percent を変更するには、SETコマンドを実行します。次の例では、analyze_threshold_percentを 20 パーセントに変更します。

set analyze_threshold_percent to 20;

数行のみを変更した場合にテーブルを分析するには、analyze_threshold_percentに任意の小さい数字を設定します。たとえば、analyze_threshold_percentを 0.01 に設定すると、少なくとも 10,000 行が変更された場合は 100,000,000 行のテーブルをスキップしません。

set analyze_threshold_percent to 0.01;

ANALYZE でテーブルがスキップされるのは、分析のしきい値を満たしていないためです。Amazon Redshift は次のメッセージを返します。

ANALYZE SKIP

行が変更されていない場合でもすべてのテーブルを分析するには、analyze_threshold_percentを 0 に設定します。

ANALYZE オペレーションの結果を表示するには、STL_ANALYZEシステムテーブルに対してクエリを実行します。

テーブル分析の詳細については、「テーブルを分析する」を参照してください。

TICKIT データベースのすべてのテーブルを分析し、進捗情報を返します。

analyze verbose;

LISTING テーブルのみを分析します。

analyze listing;

VENUE テーブルの VENUEID 列と VENUENAME 列を分析します。

analyze venue(venueid, venuename);

VENUE テーブルの述語の列のみを分析します。

analyze venue predicate columns;