クエリのコストを測定する
QueryRequestOptions クラスは、1 秒あたりの要求ユニット数 (RU/秒) の観点からクエリのコストを測定するときにも使用できます。
まず、QueryRequestOptions クラスの MaxItemCount プロパティを、各結果ページで取得したい項目の数に設定します。 GetItemQueryIterator<> メソッドを呼び出して、SQL クエリと options 変数を渡します。
QueryRequestOptions options = new()
{
MaxItemCount = 25
};
FeedIterator<Product> iterator = container.GetItemQueryIterator<Product>(query, requestOptions: options);
次に、次の 2 つのマイナー変更を加えて、いつものように結果を反復処理します。
- while ループの各反復処理の中で、 結果ページごとに現在の RU 使用量 (RU/秒) をコンソールに出力します。
- 結果ページごとの RU 使用量 (RU/秒) をすべて集計した後、while ループの外で、消費 RU の合計 (RU/秒) を出力します。
double totalRUs = 0;
while(iterator.HasMoreResults)
{
FeedResponse<Product> response = await iterator.ReadNextAsync();
foreach(Product product in response)
{
// Do something with each product
}
Console.WriteLine($"RUs:\t\t{response.RequestCharge:0.00}");
totalRUs += response.RequestCharge;
}
Console.WriteLine($"Total RUs:\t{totalRUs:0.00}");
コンソール出力は、結果の各ページの RU 使用量 (RU/秒) をレンダリングした後、それまでのすべての値を集計 (合計) した最終的な RU 使用量 (RU/秒) をレンダリングします。
RUs: 2.82
RUs: 2.82
RUs: 2.83
RUs: 2.84
RUs: 2.25
Total RUs: 13.56
注意
このサンプルでは、cosmicworks コマンドライン ツールを使用して生成されたデモ データベースに対して SELECT * FROM products
クエリを使用しています。