ANALYZE - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ANALYZE

更新資料表統計資訊以供查詢規劃器使用。

所需權限

以下是 的必要權限ANALYZE:

  • 超級使用者

  • 具有 ANALYZE權限的使用者

  • 關係的擁有者

  • 共用資料表的資料庫擁有者

語法

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

參數

VERBOSE

傳回有關ANALYZE操作之進度資訊訊息的子句。若您不指定資料表,此選項會很實用。

table_name

您可以分析特定資料表,包括臨時資料表。您可以利用結構描述名稱限定資料表。您可以選擇性的指定 table_name 來分析單一資料表。您無法使用單一 table_name 陳述式指定多個 ANALYZE table_name。如果您未指定 table_name 值,則目前連接的資料庫中所有資料表都會加以分析,包括系統目錄中的永久性資料表。如果自上次變更的資料列百分比ANALYZE低於分析閾值,Amazon Redshift 會略過分析資料表。如需詳細資訊,請參閱分析閾值

您不需要分析 Amazon Redshift 系統資料表 (STL 和 STV資料表)。

column_name

若您指定 table_name,則您也可以在資料表中指定一個或多個資料欄 (括號內以資料欄分隔的清單)。若指定了資料欄清單,則只會分析列出的資料欄。

PREDICATE COLUMNS | ALL COLUMNS

表示是否ANALYZE應僅包含述詞資料欄的子句。指定 僅PREDICATECOLUMNS分析在先前查詢中用作述詞或可能用作述詞的候選資料欄。指定 ALL COLUMNS 以分析所有資料欄。預設值為 ALL COLUMNS。

若下列任一條件為真,表示資料欄包含在一組述詞資料欄中:

  • 資料欄已在查詢中做為篩選的一部分、聯結條件或 group by 子句使用。

  • 資料欄是分佈索引鍵。

  • 資料欄是排序索引鍵的一部分。

如果沒有資料欄標示為述詞資料欄,例如因為尚未查詢資料表,即使指定 PREDICATE COLUMNS ,也會分析所有資料欄。發生這種情況時,Amazon Redshift 可能會回應訊息,例如找不到 " 的述詞欄table-name"。 分析所有資料欄 。如需述詞資料欄的相關資訊,請參閱 分析資料表

使用須知

Amazon Redshift 會自動在您使用下列命令建立的資料表ANALYZE上執行:

  • CREATE TABLE AS

  • CREATE TEMP TABLE AS

  • SELECT INTO

您無法分析外部資料表。

第一次建立這些資料表時,您不需要在這些資料表上執行 ANALYZE 命令。若您修改這些資料表,則應依照與其他資料表相同的方式進行分析。

分析閾值

為了縮短處理時間並改善整體系統效能,如果自上次ANALYZE命令執行以來變更的資料列百分比低於 analyze_threshold_percent 參數指定的分析閾值,Amazon Redshift 會略過ANALYZE資料表。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,則 100,000,000 資料列的資料表中變更的資料列大於 10,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;