ページ上のいくつかのドロップダウンのデータソースとしてデータテーブルを使用していますが、ポストバック中にページが非常に遅いことに気づきました。
私はここまでそれを追跡しました:
DataTable dt = new DataTable();
dt.Load(sqlCmd.ExecuteReader()); // this takes ages
sqlコマンドはパラメーター化されたクエリであり、ストアドプロシージャではありません(戻り値とwhereは非常に「動的」であるため、これは実用的ではありません)が、それでも単純なselectユニオンクエリです。通常、他のドロップダウンで選択されている内容に応じて、ドロップダウンごとに5〜20のオプションが返されます。Management Studioでクエリを実行すると、1秒以内に実行されます。ここでは、ドロップダウンごとに最大7秒かかる場合があり、ページに6つのドロップダウンがすぐに追加されます。私もSqlDataAdapterで試しました:
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
sqlDa.Fill(dt); // this takes ages
しかし、これは同じくらい遅かった。私はこれを2つの異なるシステムで使用していますが、どちらも同じパフォーマンスの問題があります。
誰かがより良い(より速い)方法を知っているか、なぜこれがとても遅いのかを知っているなら、それは素晴らしいことです。