Amazon QLDB のインデックス作成コマンド - Amazon Quantum Ledger Database (Amazon QLDB)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon QLDB のインデックス作成コマンド

Amazon QLDB では、テーブルのドキュメントフィールドにインデックスを作成するには、CREATE INDEX コマンドを使用します。

特定のテーブルでこの PartiQL コマンドを実行するためのアクセスを制御する方法については、「Amazon QLDB の標準アクセス許可モードの開始方法」を参照してください。

重要

ドキュメントを効率的に検索するには、インデックスが必要です。インデックスがないと、QLDB はドキュメントを読み取るときにテーブルスキャンを実行する必要があります。これにより、同時実行の競合やトランザクションのタイムアウトなど、大きなテーブルでパフォーマンスの問題が発生する可能性があります。

テーブルスキャンを回避するには、インデックス付きフィールドまたはドキュメント ID で等価演算子 (= または IN) を使用する WHERE 述語句でステートメントを実行する必要があります。詳細については、「クエリパフォーマンスの最適化」を参照してください。

インデックスを作成する際には、以下の制約があることに注意してください。

  • インデックスは 1 つのトップレベルフィールドでのみ作成できます。複合、ネスト、一意、および関数ベースのインデックスはサポートされていません。

  • 任意の Ion データ型 (liststruct など) でインデックスを作成できます。ただし、Ion のデータ型に関わらず、Ion 値全体の等価によってインデックス付けされたルックアップのみを実行できます。例えば、list 型をインデックスとして使用すると、リスト内の 1 つの項目でインデックス付けされたルックアップは実行できません。

  • クエリのパフォーマンスは、等価述語 (WHERE indexedField = 123WHERE indexedField IN (456, 789) など) を使用する場合にのみ向上します。

    QLDB では、クエリの述語で不等式はサポートされていません。そのため、範囲でフィルタリングされるスキャンは実装されていません。

  • インデックス付きフィールドの名前は大文字と小文字の区別があり 128 文字以下で指定します。

  • QLDB でのインデックス作成は非同期です。空でないテーブルでのインデックスの作成を完了するのにかかる時間は、テーブルサイズによって異なります。詳細については、「インデックスの管理」を参照してください。

構文

CREATE INDEX ON table_name (field)

パラメータ

table_name

インデックスを作成するテーブルの名前。このテーブルは既存であることが必要です。

テーブル名では、大文字と小文字が区別されます。

field

インデックスを作成するドキュメントのフィールド名。このフィールドは最上位の属性であることが必要です。

インデックス付きフィールドの名前は大文字と小文字の区別があり 128 文字以下で指定します。

任意の Amazon Ion データ型 (liststruct など) でインデックスを作成できます。ただし、Ion のデータ型に関わらず、Ion 値全体の等価によってインデックス付けされたルックアップのみを実行できます。例えば、list 型をインデックスとして使用すると、リスト内の 1 つの項目でインデックス付けされたルックアップは実行できません。

戻り値

tableId - インデックスを作成したテーブルの一意の ID。

CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
CREATE INDEX ON Vehicle (VIN)

ドライバーを使用したプログラムでの実行

QLDB ドライバーを使用してこのステートメントをプログラムで実行する方法については、「ドライバーの開始方法」の以下のチュートリアルを参照してください。