的代碼是這樣的:爲了減少數據庫執行時間,我的GetEmails()方法可能會發生什麼變化?
public class Email
{
public string MailAddress {get;set;}
public string MailOwner {get;set;}
public int MailSended {get;set;}
public int MailReceived {get;set;}
}
public class EmailList
{
public List<Email> Items {get; private set;}
private IDBConnection _connection;
public EmailList(IDBConnection connection)
{
_connection = connection;
}
public List<Email> GetEmails(int customerId)
{
var emailList = new List<Email>();
var sql = "SELECT * FROM EmailsAddress WHERE Id = '" + customerId + "'";
using (var ObjectToAccessDatabaseAndStoreResultsIntoDataTable = new ObjectToObtainDbResultsIntoDataTable(_connection, sql))
{
foreach(DataRow row in ObjectToAccessDatabaseAndStoreResultsIntoDataTable.Datatable)
{
var email = new Email{
MailAddress = Convert.ToString(row["MailAddress"]);
MailOwner = Convert.ToString(row["MailOwner"]);
MailSended = Convert.ToInt32(row["MailSended"]);
MailReceived = Convert.ToInt32(row["MailReceived"]);
}
emailList.Add(email);
}
return emailList;
}
}
當GetEmails()
被多次調用來檢索電子郵件地址,爲即2000個客戶,需要花費很長的時間來恢復。使用SQL Server Profiler,我發現大部分時間都是針對GetEmails()
例程。
爲什麼GetEmails()
程序需要這麼長時間?我正在使用SQL Server。
它看起來不正確的ID來獲得郵件地址,應該不是像'其中客戶ID = ...'? – Silvermind
我做了一個快速示例代碼。Obiviuosly我的代碼不是這樣的,但它的工作是這樣的。 – CRK