

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# ANALYZE
<a name="r_ANALYZE"></a>

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

## 所需權限
<a name="r_ANALYZE-privileges"></a>

以下是 ANALYZE 所需的權限：
+ 超級使用者
+ 具有 ANALYZE 權限的使用者
+ 關係的擁有者
+ 共用資料表的資料庫擁有者

## 語法
<a name="r_ANALYZE-synopsis"></a>

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

## Parameters
<a name="r_ANALYZE-parameters"></a>

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

 *table\$1name*   
您可以分析特定資料表，包括臨時資料表。您可以利用結構描述名稱限定資料表。您可以選擇性的指定 table\$1name 來分析單一資料表。您無法在單一 ANALYZE *table\$1name* 陳述式中指定多個 *table\$1name*。如果您未指定 *table\$1name* 值，則目前連接的資料庫中所有資料表都會加以分析，包括系統目錄中的永久性資料表。如果自上次 ANALYZE 之後變更的資料列百分比低於分析閾值，Amazon Redshift 會略過分析資料表。如需詳細資訊，請參閱[分析閾值](#r_ANALYZE-threshold)。  
您不需要分析 Amazon Redshift 系統資料表 (STL 和 STV 資料表)。

 *column\$1name*   
若您指定 *table\$1name*，則您也可以在資料表中指定一個或多個資料欄 (括號內以資料欄分隔的清單)。若指定了資料欄清單，則只會分析列出的資料欄。

 PREDICATE COLUMNS \$1 ALL COLUMNS   
這些子句會指出，ANALYZE 是否應該只包含述詞資料欄。指定 PREDICATE COLUMNS 時，只會分析已在先前查詢中做為述詞使用的資料欄，或可能做為述詞使用的候選資料欄。指定 ALL COLUMNS 則會分析所有資料欄。預設值是 ALL COLUMNS。  
若下列任一條件為真，表示資料欄包含在一組述詞資料欄中：  
+ 資料欄已在查詢中做為篩選的一部分、聯結條件或 group by 子句使用。
+ 資料欄是分佈索引鍵。
+ 資料欄是排序索引鍵的一部分。
如果資料表尚未經過查詢，因而未將任何資料欄標示為述詞資料欄，則即使指定了 PREDICATE COLUMNS，仍會分析所有資料欄。發生這種情況時，Amazon Redshift 可能會回應以下訊息：No predicate columns found for "*table-name*" (找不到 "table-name" 的述詞欄)。分析所有欄。如需述詞資料欄的相關資訊，請參閱 [分析資料表](t_Analyzing_tables.md)。

## 使用須知
<a name="r_ANALYZE-usage-notes"></a>

Amazon Redshift 會在您使用下列命令建立的資料表上自動執行 ANALYZE：
+ CREATE TABLE AS
+ CREATE TEMP TABLE AS 
+ SELECT INTO

 您無法分析外部資料表。

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

### 分析閾值
<a name="r_ANALYZE-threshold"></a>

為了減少處理時間並提高整體系統效能，如果自上次執行 ANALYZE 命令後變更的資料列百分比低於 [analyze\$1threshold\$1percent](r_analyze_threshold_percent.md) 參數指定的分析閾值，則 Amazon Redshift 會略過資料表的 ANALYZE 操作。`analyze_threshold_percent` 預設為 10。若要變更目前工作階段的 `analyze_threshold_percent`，請執行 [SET](r_SET.md) 命令。下列範例會將 `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\$1ANALYZE](r_STL_ANALYZE.md) 系統資料表。

如需分析資料表的相關資訊，請參閱 [分析資料表](t_Analyzing_tables.md)。

## 範例
<a name="r_ANALYZE-examples"></a>

分析 TICKIT 資料庫中的所有資料表，並傳回進度資訊。

```
analyze verbose;
```

只分析 LISTING 資料表。

```
analyze listing;
```

分析 VENUE 資料表中的 VENUEID 和 VENUENAME 資料欄。

```
analyze venue(venueid, venuename);
```

只分析 VENUE 資料表中的述詞資料欄。

```
analyze venue predicate columns;
```