「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
ANALYZE
クエリプランナーで使用するテーブル統計を更新します。
Syntax
ANALYZE [ VERBOSE ] [ [ table_name [ ( column_name [, ...] ) ] ] [ PREDICATE COLUMNS | ALL COLUMNS ]
Parameters
- 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 コマンドの実行以降に変更された行の割合が、Amazon Redshift
パラメータで指定された分析のしきい値よりも低い場合、analyze_threshold_percent はテーブルの分析をスキップします。デフォルトでは、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 システムテーブルに対してクエリを実行します。
テーブル分析の詳細については、「」を参照してください。テーブルを分析する.
Examples
TICKIT データベースのすべてのテーブルを分析し、進捗情報を返します。
analyze verbose;
LISTING テーブルのみを分析します。
analyze listing;
VENUE テーブルの VENUEID 列と VENUENAME 列を分析します。
analyze venue(venueid, venuename);
VENUE テーブルの述語の列のみを分析します。
analyze venue predicate columns;