表のスキャン - Amazon DynamoDB

表のスキャン

SQL では、SELECT 句なしの WHERE ステートメントは、テーブルのすべての行を返します。Amazon DynamoDB では、Scan オペレーションで同様のアクションを行います。どちらの場合も、すべて、または一部の項目を取得できます。

SQL または NoSQL データベースのいずれを使用するにしても、スキャンは大量のシステムリソースを消費するので、控え目に使用する必要があります。スキャンが適切 (小さなテーブルをスキャンするなど) または不可避 (データの一括エクスポートの実行など) な場合はあります。しかし、一般的なルールとして、スキャンを実行しないようアプリケーションを設計する必要があります。

トピック

SQL

SQL では SELECT 句を指定せずに、WHERE ステートメントを使用してテーブルをスキャンし、データのすべてを取得することができます。結果の 1 つ以上の列をリクエストできます。または、ワイルドカード文字「*」を使用する場合は、すべての項目をリクエストできます。

以下は SELECT ステートメントの使用例です。

/* Return all of the data in the table */ SELECT * FROM Music;
/* Return all of the values for Artist and Title */ SELECT Artist, Title FROM Music;

DynamoDB

Amazon DynamoDB では、DynamoDB API または PartiQL (SQL 互換のクエリ言語) を使用して、テーブルに対してスキャンを実行します。

DynamoDB API

DynamoDB API では、テーブルまたはセカンダリインデックスの各項目にアクセスして、1 つまたは複数の項目または項目属性を返す Scan オペレーションを使用します。

// Return all of the data in the table { TableName: "Music" }
// Return all of the values for Artist and Title { TableName: "Music", ProjectionExpression: "Artist, Title" }

Scan アクションでは、FilterExpression パラメータも指定できます。これを使用して、結果に表示しない項目を破棄することができます。FilterExpression は、スキャンの実行後、結果が返されるまでの間に適用されます。(これは、大きなテーブルではお勧めしません。返される一致項目がごく少数でも、Scan 全体に対して料金が請求されます。)

注記

Scan を使用したサンプルコードについては、「DynamoDB および AWS SDK の使用開始」を参照してください。

PartiQL for DynamoDB

PartiQL では、Select ステートメントを使用するテーブルに対してすべての内容を返す ExecuteStatement オペレーションを使用してスキャンを実行します。

SELECT AlbumTitle, Year, Price FROM Music

このステートメントは、Music テーブルのすべての項目を返すことに注意してください。

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