Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

テーブルをスキャンする

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

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

SQL

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

次に例を示します。

/* 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

DynamoDB は、同じように機能する 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 の使用開始」を参照してください。

このページの内容: