インデックスのクエリの実行およびスキャン - Amazon DynamoDB

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

インデックスのクエリの実行およびスキャン

SQL の SELECT ステートメントを使用したインデックスのクエリとスキャンを Amazon DynamoDB の Query および Scan オペレーションと比較します。

SQL を使ってインデックスのクエリを実行してスキャンする

リレーショナルデータベースでは、インデックスを直接使用しません。代わりに、SELECT ステートメントの発行により、テーブルでクエリを実行し、クエリオプティマイザは任意のインデックスを利用できます。

クエリオプティマイザは、使用できるインデックスを評価し、クエリを高速化するためにそれらを使用できるかを決定するリレーショナルデータベース管理システム (RDBMS) のコンポーネントです。クエリを高速化するためにインデックスが使用できる場合、RDBMS は最初にインデックスにアクセスし、それを使用してテーブルのデータを特定します。

パフォーマンスを向上させるGenreAndPriceIndexために が使用できる SQL ステートメントをいくつか紹介します。ここでは、Music テーブルに十分なデータがあり、クエリオプティマイザが、テーブル全体にスキャンするのではなく、このインデックスを使用することを前提にします。

/* All of the rock songs */ SELECT * FROM Music WHERE Genre = 'Rock';
/* All of the cheap country songs */ SELECT Artist, SongTitle, Price FROM Music WHERE Genre = 'Country' AND Price < 0.50;

DinamoDB でインデックスのクエリを実行してスキャンする

DynamoDB では、テーブルに対して実行するのと同じように、インデックスに対して直接 Query および Scan オペレーションを実行します。DynamoDB API または PartiQL (SQL 互換のクエリ言語) を使用して、インデックスにクエリやスキャンを実行できます。TableNameIndexName の両方を指定する必要があります。

以下は、DynamoDB GenreAndPriceIndexの に関するいくつかのクエリです。 DynamoDB (このインデックスのキースキーマは、ジャンル価格で構成されています。)

DynamoDB API
// All of the rock songs { TableName: "Music", IndexName: "GenreAndPriceIndex", KeyConditionExpression: "Genre = :genre", ExpressionAttributeValues: { ":genre": "Rock" }, };

この例では ProjectionExpression を使用して、属性すべてではなく、一部のみを結果に表示することを示します。

// All of the cheap country songs { TableName: "Music", IndexName: "GenreAndPriceIndex", KeyConditionExpression: "Genre = :genre and Price < :price", ExpressionAttributeValues: { ":genre": "Country", ":price": 0.50 }, ProjectionExpression: "Artist, SongTitle, Price" };

以下は、 のスキャンですGenreAndPriceIndex

// Return all of the data in the index { TableName: "Music", IndexName: "GenreAndPriceIndex" }
PartiQL for DynamoDB

PartiQL では、Select ステートメントを使用して、インデックスに対してクエリとスキャンを実行します。

// All of the rock songs SELECT * FROM Music.GenreAndPriceIndex WHERE Genre = 'Rock'
// All of the cheap country songs SELECT * FROM Music.GenreAndPriceIndex WHERE Genre = 'Rock' AND Price < 0.50

以下は、 のスキャンですGenreAndPriceIndex

// Return all of the data in the index SELECT * FROM Music.GenreAndPriceIndex
注記

Select を使用したコード例については、「DynamoDB 用の PartiQL select ステートメント」を参照してください。