.net コネクタ 6.5.4 で MySQL5.6.9-rc を使用して、2 つのフィールド (整数 ID、整数データ、ID が主キー) を持つテーブルにデータを挿入しています。テーブルに 2000 行を挿入するのに非常に時間がかかります (約 35 秒) (UpdateBatchSize = 1 と UpdateBatchSize = 500 で大きな違いはありません)。コネクタ 6.6.4 も試しましたが、問題は残ります。
ただし、MySQL5.4.3 およびコネクタ 6.20 では高速です。UpdateBatchSize を 500 に設定すると、2000 行をテーブルに挿入するのに 1 秒しかかかりません (UpdateBatchSize = 1 の場合も低速です)。次に、MySQL5.4.3 とコネクタ 6.5.4 または 6.6.4 でテストしましたが、遅いです!
以下のようにデータを挿入するコードを作成し、mysql6.6.9 およびコネクタ 6.54、Windows XP および VS2008 で実行しました。
public void Test()
{
MySqlConnection conn = new MySqlConnection("Database=myDatabase;Server=localhost;User Id=root;Password=myPassword");
string sql = "Select * from myTable";
MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
adapter.UpdateBatchSize = 500;
MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(adapter);
DataTable table = new DataTable();
adapter.Fill(table); //it is an empty table
Add2000RowsToTable(table);
int count = adapter.Update(table); //It took 35 seconds to complete.
adapter.Dispose();
conn.Close();
}
private void Add2000RowsToTable(DataTable table)
{
DataRow row;
for (int i = 0; i < 2000; i++)
{
row = table.NewRow();
row[0] = i;
row[1] = i;
table.Rows.Add(row);
}
}
MySqlDataAdapter.UpdateBatchSize がコネクタ 6.5.4 および 6.64 で機能しないように思えます。
前もって感謝します