0

DynamoDB に約 300,000 行のテーブルがあります。ソース、データ、サイクルの 3 つの列が含まれています。source 属性はハッシュ キーで、data は範囲キーです。サイクル属性は、行が追加されるたびにアプリケーションによって追加される数値です。これらの行を次のフィルターでスキャンしていました。

{
    TableName: "tableName",
    Limit: 20,
    ScanFilter: {
        cycles: {
            AttributeValueList: [
                {
                    N: "0"
                }
            ],
            ComparisonOperator: "EQ"
        }
    }
}

ただし、この scanfilter は、自発的に適切に動作しないことを決定したようです。このリクエストを実行するたびに、ゼロの結果が返されます。scanfilter を削除すると、20 件の結果が返されるので、limit 属性や tableName 属性とは何の関係もないと思います。面白いのは、サイクルが「1」に等しいアイテムを検索するようにフィルターを設定すると、実際に機能することです。おそらく、テーブルの先頭にサイクル = 1 の行が 10 行あるためです。

私の質問は、これを修正する方法です。新しいインデックスを追加する必要がありますか、それともこのスキャンフィルターを変更する必要がありますか? スキャンの代わりにクエリ コマンドを使用することもできますが、これを行う以前の試みもうまくいきませんでした。

4

1 に答える 1

0

気にしないでください。これには query メソッドを使用する必要があります。scan メソッドは、scanFilter が false を返す時点まで、テーブルから最初の X 行しか取得しないことに気付きました。したがって、テーブル全体を検索するわけではありません。

于 2014-10-14T03:26:27.207 に答える