この質問は、以前に尋ねられた質問のフォローアップです。
このような簡単なプログラムを作成しました。
string s;
do
{
  using (SqlConnection conn = new SqlConnection("POOLEDCONN"))
  {
    using (SqlCommand cmd = new SqlCommand("", conn))
    {
        s = (string) cmd.ExecuteScalar();
        Code2IncrementPerfomanceCounter
    }
  }    
} while (!string.IsNullOrEmpty(s))
クエリは文字列(nvarchar(max)、現在の最大サイズ9k)を返しますが、SQLServerと.NETの間には多くの遅延があります。SQLプロファイラーはクエリの期間が0ミリ秒であると言っているので、データベースではないと思います。ネットワークは1ミリ秒未満で応答しているため、ネットワークであってはなりません。
このコードをテストサーバー(VMWare、SQLは仮想化されていません)で実行すると、1秒あたり最大600ループになります。アプリケーションは5%を超えるCPUを消費しません。なぜ速くならないのですか?SQLなどからデータを取得するためにストリーミングを使用する必要がありますか?
よろしくお願いします