第三方應用程序爲每個項目創建一個數據庫。所有的數據庫都有相同的表和結構。新項目可能隨時添加,因此我無法使用任何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