よく 複数のデータを取得する時は、BatchGetItem でという記事がありますが、これには注意点があります。
さまざまなオペレーションに対応するキャパシティーユニットの計算
(バッチ内の各項目が別々に読み込まれる)BatchGetItem については、DynamoDB は、まず各項目のサイズを次の 4 KB に切り上げ、次に、合計サイズを算出します。この結果は、すべての項目の合計サイズと必ずしも同じではありません。たとえば、BatchGetItem が 1.5 KB の項目と 6.5 KB の項目を読み込むと、DynamoDB は、サイズを 8 KB(1.5 KB + 6.5 KB)ではなく、12 KB(4 KB + 8 KB)と算出します。
この様に BatchGetItem は各サイズを4KB単位に切り上げてから合計するので キャパシティーユニット の削減にはなりません。
ですが、Queryの場合は合計サイズを算出してから4KBに切り上げてくれます。
Queryの場合、返されるすべての項目は、単一の読み込みオペレーションとして処理されます。その結果、DynamoDB はすべての項目の合計サイズを算出し、次の 4 KB 境界に切り上げます。たとえば、クエリの結果、合計サイズが 40.8 KB になる 10 項目が返されるとします。DynamoDB はオペレーションの項目サイズを 44 KB まで切り上げます。クエリの結果、64 バイトの項目が 1,500 項目返されると、累積サイズは 96 KB になります。
可能であれば、Queryを利用する様にすると、キャパシティーユニットの消費が削減できます。
これから設計するのであれば、Queryでデータの取得ができるように設計される事をオススメします。