public DataTable FetchData(string sQuery)
{
DataTable dtable = new DataTable();
using (SqlConnection conn = new SqlConnection(conString))
{
conn.Open();
using (SqlCommand sqlCmd = new SqlCommand(sQuery, conn))
{
SqlDataReader sdRead = sqlCmd.ExecuteReader();
dtable.Load(sdRead);
}
}
return dtable;
}
Datatable dt = FetchData(string sQuery);
foreach(DataRow row in table.Rows)
ClassA obj = new ClassA(row);
// Some manipulations
//.....
Class A
{
int id;
int name;
A(DataRow dr)
{
id = dr["ID"];
name = dr["Name"];
}
}
データベースから約 15,00,000 行を取得する必要があります。
2 つのシナリオについて提案が必要です。
上記のメソッドを 1 ~ 5 回呼び出すので、明らかに 1 ~ 5 個の接続が作成されます。wtの10~20倍になれば性能は?(または、1 つのグローバル接続を作成し、1 つの接続を開いてすべてを処理し、最後に閉じます。)
データテーブルはどうですか?任意の代替。これほど多くの行には、ここで切断されたアーキテクチャが必要だと思います。取得したデータを自分のクラス オブジェクトに詰め込む必要があります (または、datareader を
List<objects>
繰り返し、FetchData() の中に詰め込みます)。
助言がありますか?