SQL Server Management Studio内で実行すると、(正しいインデックスを追加して最適化した後)実行に約3秒かかるクエリ(ストアドプロシージャとして保存された約1600行)があります。
このためのラッパーを C# で作成し、URI を使用してこのクエリを実行できるようにしました。ただし、これは実行に 30 秒以上かかるため、このクエリをループの一部として実行すると、保留中のリクエストが多すぎるためにブラウザが停止します。私はこのようにラッパーを書きました:
try
{
string ConString = Constants.connString;
using (con = new SqlConnection(ConString))
{
cmd = new SqlCommand(sql, con);
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
...
}
}
}
私の接続文字列はこれです:
Data Source={0};Initial Catalog={1};Integrated Security=True;MultipleActiveResultSets=true
SSMS内で複数回実行したため、クエリ自体が適切であることはわかっていますが、正常に機能しました(平均5秒未満)。また、何を提供すればよいか分からないことを除いて、デバッグ情報をさらに提供できれば幸いです。
このような問題のトラブルシューティングを行うには、どこから始めればよいでしょうか?
編集:
SQL プロファイラーを実行し、いくつかの統計を収集しました。これは私が観察しているものです。実行されている正確なクエリであることは非常に奇妙です。この時点で他にできることがあれば教えてください。