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