SQL Server Management Studioで直接SQL文を実行すると非常に高速ですが、C#プログラムで同じ処理を実行しようとすると非常に遅いです!C#プログラムで使用するとSQL SELECTコマンドが遅くなる
public static DataTable GetInfosPrepa(String activite, String depot, String cle_prepa, int sortie, int waiting)
{
String connectionString = ConfigurationManager.ConnectionStrings["SQLProd"].ToString(); //Récupération de la chaîne de connexion
SqlConnection myConnection = new SqlConnection(connectionString); //Nouvelle connexion à la base de donnée
myConnection.Open(); //On ouvre la connexion
String query = "";
if (waiting == 0)
{
query = @"Select * from reflex.hlprenp
where pecact = @activite
and pecdpo = @depot
and cast(penann as varchar) + cast(penpre as varchar) = @numero ";
}
else
{
query = @"Select *
from reflex.hlprenp, reflex.hlprplp, reflex.hlodpep
left join reflex.hlvaicp on oenobj = vcnobj
where pecact = p1cact
and pecdpo = p1cdpo
and penpre = p1npre
and penann = p1nann
and p1cact = oecact
and p1cdpo = oecdpo
and p1nano = oenann
and p1nodp = oenodp
and vccicm = 'STATUT'
and vcvaic = 'WAITING'
and pecact = @activite
and pecdpo = @depot
and cast(penann as varchar) + cast(penpre as varchar) = @numero ";
}
if (sortie < 2)
{
query += "and [email protected]";
}
SqlDataAdapter source = new SqlDataAdapter(query, myConnection);
source.SelectCommand.Parameters.AddWithValue("@activite", activite);
source.SelectCommand.Parameters.AddWithValue("@depot", depot);
source.SelectCommand.Parameters.AddWithValue("@numero", cle_prepa);
source.SelectCommand.Parameters.AddWithValue("@sortie", sortie);
DataTable data = new DataTable();
source.Fill(data);
myConnection.Close();
return data;
}
(= 0を待っているとき、要求が遅くなる!):ここでは
がコードです...私は、クエリのためにまったく同じパラメータを使用しますが、それは異なる反応をするようですご協力ありがとうございました !
*「反応が異なるようです」*実際のパフォーマンスデータがありますか、それとも遅く感じますか?あなたはそれを推測するのではなく、パフォーマンスを測定する必要があります。 – Sefe
デバッガを接続せずに実行するとまだ遅いですか? – bornfromanegg
sqlserverの管理スタジオで:1秒未満、C#で:10秒以上... – alexay68