テーブルのスキャンにおける相違点
SQL では、SELECT
句なしの WHERE
ステートメントは、テーブルのすべての行を返します。Amazon DynamoDB では、Scan
オペレーションで同様のアクションを行います。どちらの場合も、すべて、または一部の項目を取得できます。
SQL または NoSQL データベースのいずれを使用するにしても、スキャンは大量のシステムリソースを消費するので、控え目に使用する必要があります。スキャンが適切 (小さなテーブルをスキャンするなど) または不可避 (データの一括エクスポートの実行など) な場合はあります。しかし、一般的なルールとして、スキャンを実行しないようアプリケーションを設計する必要があります。詳細については、「DynamoDB のテーブルに対するクエリの実行」を参照してください。
注記
一括エクスポートを実行すると、パーティションごとに少なくとも 1 つのファイルも作成されます。各ファイル内のすべての項目は、その特定のパーティションのハッシュされたキースペースからのものです。
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 互換のクエリ言語) を使用して、テーブルに対してスキャンを実行します。