

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

# Amazon QLDB 中的 CREATE INDEX 命令
<a name="ql-reference.create-index"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `CREATE INDEX`命令為資料表上的文件欄位建立索引。

若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**重要**  
QLDB 需要索引才能有效率地查詢文件。如果沒有索引，QLDB 讀取文件時需要執行完整資料表掃描。這可能會導致大型資料表的效能問題，包括並行衝突和交易逾時。  
若要避免資料表掃描，您必須在索引欄位或文件 ID 上使用*等式*運算子 (`=` 或 `IN`) 搭配`WHERE`述詞子句執行陳述式。如需詳細資訊，請參閱[最佳化查詢效能](working.optimize.md)。

建立索引時請注意下列限制：
+ 索引只能在單一最上層欄位上建立。不支援複合、巢狀、唯一和以函數為基礎的索引。
+ 您可以在任何 [Ion 資料類型](ql-reference.data-types.md)上建立索引，包括 `list`和 `struct`。不過，無論 Ion 類型為何，您都只能依整個 Ion 值的相等性執行索引查詢。例如，使用 `list` 類型做為索引時，您無法透過清單中的一個項目進行索引查詢。
+ 只有在您使用等式述詞時，查詢效能才會獲得改善；例如， `WHERE indexedField = 123`或 `WHERE indexedField IN (456, 789)`。

  QLDB 不會遵守查詢述詞中的不等式。因此，不會實作範圍篩選掃描。
+ 索引欄位的名稱區分大小寫，最多可有 128 個字元。
+ QLDB 中的索引建立是非同步的。在非空白資料表上完成建立索引所需的時間，會因資料表大小而有所不同。如需詳細資訊，請參閱[管理索引](working.manage-indexes.md)。

**Topics**
+ [語法](#ql-reference.create-index.syntax)
+ [參數](#ql-reference.create-index.parameters)
+ [傳回值](#ql-reference.create-index.return)
+ [範例](#ql-reference.create-index.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.create-index.driver)

## 語法
<a name="ql-reference.create-index.syntax"></a>

```
CREATE INDEX ON table_name (field)
```

## 參數
<a name="ql-reference.create-index.parameters"></a>

***table\$1name***  
您要建立索引的資料表名稱。索資料表必須已存在。  
資料表名稱區分大小寫。

***欄位***  
要為其建立索引的文件欄位名稱。欄位必須是最上層屬性。  
索引欄位的名稱區分大小寫，最多可有 128 個字元。  
您可以在任何 [Amazon Ion 資料類型](ql-reference.data-types.md)上建立索引，包括 `list`和 `struct`。不過，無論 Ion 類型為何，您都只能依整個 Ion 值的相等性執行索引查詢。例如，使用 `list` 類型做為索引時，您無法透過清單中的一個項目進行索引查詢。

## 傳回值
<a name="ql-reference.create-index.return"></a>

`tableId` – 您建立索引之資料表的唯一 ID。

## 範例
<a name="ql-reference.create-index.examples"></a>

```
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
```

```
CREATE INDEX ON Vehicle (VIN)
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.create-index.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱*驅動程式入門*中的下列教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)