我有下面的代碼在C#WPF加載數據的時間很長。大數據量。在C#中的SQL查詢
ConsultaDB consulta = new ConsultaDB();
foreach (var item in lista)
{
var cp = consulta.returnCP(item.Key);
if (cp.Length != 5)
{
//Some code here with the data returned
}
}
list
是> 100K元素的集合,而ConsultaDB
對象有以下代碼:
class ConsultaDB
{
string CP;
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=CCPP.accdb");
public string returnCP(string id)
{
var comm = conn.CreateCommand();
comm.CommandType = CommandType.Text;
comm.CommandText = "SELECT CP FROM CP WHERE ID='" + id+ "'";
var returnValue = comm.ExecuteScalar();
CP = returnValue.ToString();
return CP;
}
public ConsultaDB()
{
conn.Open();
}
}
這裏的問題是所有對數據庫的請求都需要耗費大量的時間才能完成。我看到循環運行良好,但肯定沒有優化。
那麼,我該如何提高這個過程的速度呢?
對於初學者,您可以使用'where id in(1,3,5,7,8,9)',您是否真的需要選擇全部100k?如果你的數據庫中有這些ID - 你可以進行一個更快的連接。 –
@ juergen-d數據庫有成對的id,CP。我需要知道列表中每個元素的CP以進行統計計算。 –
代碼中的ID來自哪裏?如果來自DB,那麼你可以直接加載CP –