1 つのバッチで 2 つの行を取得するように設計された TableBatchOperation を初期化するコードを次に示します。
TableBatchOperation batch = new TableBatchOperation();
batch.Add(TableOperation.Retrieve("somePartition", "rowKey1"));
batch.Add(TableOperation.Retrieve("somePartition", "rowKey2"));
//second call throws an ArgumentException:
//"A batch transaction with a retrieve operation cannot contain
//any other operation"
前述のように、例外がスローされ、単一のバッチで N 行を取得することはサポートされていないようです。リクエストごとに約 50 行を取得する必要があるため、これは私にとって大きな問題です。この問題は、コスト面と同じくらいパフォーマンス面でも重要です。ご存知かもしれませんが、Azure Table Storage の価格はトランザクションの量に基づいています。つまり、50 回の取得操作は、1 回のバッチ操作よりも 50 倍の費用がかかります。
私は何かを逃しましたか?
余談 ですが、私は新しい Azure Storage API 2.0 を使用しています。この質問が Web 上で提起されたことがないことに気付きました。この制約は最近追加された可能性がありますか?
編集
ここで関連する質問を見つけました: Azure Table Storage Query on PartitionKey/RowKey List で非常に遅い。行キーに「または」を指定して TableQuery を使用すると、完全なテーブル スキャンが行われるようです。ここには本当に深刻な問題があります...