ハッシュキー/プライマリキーが "UserID"で電子メールで構成される "Users"というAWS DynamoDBテーブルがあります。それには、最初に「毎日のポイント」と呼ばれる2つの属性と、2番目の「TimeSpendInTheApp」という属性があります。今私はクエリを実行するか、テーブル上でスキャンする必要があります、それは私に最高のポイントを持っているトップ50ユーザーとアプリで最も多くの時間を過ごしたトップ50ユーザーを与えます。このクエリはcron aws lambdaによって1日1回だけ実行されます。私はこのクエリまたはスキャンのための最良のソリューションを見つけることを試みています。私にとって、コストはスピード/効率よりも重要です。セカンダリグローバルインデックスまたはポイント上のローカルインデックスを維持することは、私が避けたいそれらのインデックスに対してReadユニットとWriteユニットを割り当てる必要があるため、コストのかかる操作になる可能性があります。 「ユーザー」テーブルは最大10万〜15万レコードあり、平均して50,000レコードになります。私の最善の選択肢は何ですか?提案してください。DynamDBテーブルのスキャンまたはセカンダリグローバルインデックスまたはローカルインデックスのクエリ
私は考えていますが、最初の選択肢は、このスキャン後に50個以上のレコードが見つかった場合は、フィルタ式で特定のポイント(たとえば5000)値を入力して上位50レコードを取得します。このスキャンで結果が返ってこない場合や、結果が非常に少ない場合は、Filter Expression値(たとえば3000)を減らしてから、同じスキャン操作を再度実行します。フィルタ式の値(たとえば2500)が5000以上のレコードを返す場合は、フィルタ式の値を減らします。これも可能ですか?ページネーションも処理する必要があると思います。 50,000レコードのテーブルをスキャンすることをお勧めしますか?
アドバイスやご提案が役に立ちます。前もって感謝します。