サードパーティのアプリケーションは、プロジェクトごとに1つのデータベースを作成します。すべてのデータベースは同じテーブルと構造を持っています。私はEFスキーマを使うことができないので、いつでも新しいプロジェクトを追加することができます。私は今何未知のデータベースのクエリを最適化
は次のとおりです。
private IEnumerable<Respondent> getListRespondentWithStatuts(string db)
{
return query("select * from " + db + ".dbo.respondent");
}
private List<Respondent> query(string sqlQuery)
{
using (var sqlConx = new SqlConnection(Settings.Default.ConnectionString))
{
sqlConx.Open();
var cmd = new SqlCommand(sqlQuery, sqlConx);
return transformReaderIntoRespondentList(cmd.ExecuteReader());
}
}
private List<Respondent> transformReaderIntoRespondentList(SqlDataReader sqlDataReader)
{
var listeDesRépondants = new List<Respondent>();
while (sqlDataReader.Read())
{
var respondent = new Respondent
{
CodeRépondant = (string)sqlDataReader["ResRespondent"],
IsActive = (bool?)sqlDataReader["ResActive"],
CodeRésultat = (string)sqlDataReader["ResCodeResult"],
Téléphone = (string)sqlDataReader["Resphone"],
IsUnContactFinal = (bool?)sqlDataReader["ResCompleted"]
};
listeDesRépondants.Add(respondent);
}
return listeDesRépondants;
}
これは正常に動作しますが、それは(分あたり20の000レコードの)致命的に遅いです。どんな戦略がより速くなるべきかについてのヒントはありますか?情報については、遅いのはtransformReaderIntoRespondentList
メソッド
ありがとう!!
select *を実行して、必要なフィールドのみを照会してください – Peter
5分で5秒増やしました。それは、遅れが変換から来ていると私が思った方法です。しかし良い点 – Mathieu
なぜあなたはパラメータで呼び出されるストアドプロシージャを書くのではなく、SQLを埋め込んでいますか? – Wil