クエリのコストを測定する

完了

QueryRequestOptions クラスは、1 秒あたりの要求ユニット数 (RU/秒) の観点からクエリのコストを測定するときにも使用できます。

まず、QueryRequestOptions クラスの MaxItemCount プロパティを、各結果ページで取得したい項目の数に設定します。 GetItemQueryIterator<> メソッドを呼び出して、SQL クエリと options 変数を渡します。

QueryRequestOptions options = new()
{
    MaxItemCount = 25
};

FeedIterator<Product> iterator = container.GetItemQueryIterator<Product>(query, requestOptions: options);

次に、次の 2 つのマイナー変更を加えて、いつものように結果を反復処理します。

  1. while ループの各反復処理の中で、 結果ページごとに現在の RU 使用量 (RU/秒) をコンソールに出力します。
  2. 結果ページごとの 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 クエリを使用しています。