データベースにインポートするデータがたくさんあります。
これらのデータには、処理、ろ過、結合などが必要です。したがって、開始前にすべてのテーブルを実行し、最後まですべてのオブジェクトを保存して、すべてがオブジェクトで行われます。
すべての処理が完了したら、コマンドを実行して保存します。時間がかかりすぎています。別のアプローチを実践することを考えました:
Task.Factory.StartNew(() => { while (allCSV.Length % 4 != 0) { Save(allCSV.FirstOrDefault()); allCSV = allCSV.Skip(1).ToArray(); }
int count1 = 0;
int middle = allCSV.Length / 4;
int count2 = middle;
int count3 = middle * 2;
int count4 = middle * 3;
Parallel.For(0, 4, new Action<int>((i) =>
{
switch (i)
{
case 0:
for (int j = 0; j < middle; j++)
{
Save(allCSV[count1]);
count1++;
}
break;
case 1:
for (int k = 0; k < middle; k++)
{
Save(allCSV[count2]);
count2++;
}
break;
case 2:
for (int l = 0; l < middle; l++)
{
Save(allCSV[count3]);
count3++;
}
break;
case 3:
for (int m = 0; m < middle; m++)
{
Save(allCSV[count4]);
count4++;
}
break;
}
}
}
それは正しいでしょうか?プロセスを合理化する最善の方法は何ですか?
いくつかの考慮事項、使用されているコンピューターは最新世代です。データベースはMySQLです。
保存に使用される ORM は非常に単純で、最適化は一切行われていません。