Hi Carlos,
>Are you using Transactions ?? If yes how ?? You should start a
>transaction before doing the Update, and assing that transaction to the
>insert command if not if you have 25000 rows there will be 25000
>transactions ( one per command ).
I've now been experimenting with to approaches. The first approach I assign
a transaction to the insert command as you suggested. 25000 inserts now take
14 seconds.
In the other approach I do a batch execution, which takes 11 seconds.
These results are much more acceptable, but are still 2-3 times slower than
in C++ using the IBPP library (25000 INSERTs takes only 5 seconds).
I have added my code for the two approaches - am I doing something wrong?
Alex Jankowski
First approach:
FbConnection connection = new FbConnection(connectionString);
connection.Open();
FbDataAdapter dataAdapter = new FbDataAdapter("SELECT * FROM TestTable",
connection);
FbCommandBuilder commandBuilder = new FbCommandBuilder(dataAdapter);
FbTransaction transaction = connection.BeginTransaction();
dataAdapter.SelectCommand.Transaction = transaction;
dataAdapter.InsertCommand = commandBuilder.GetInsertCommand();
dataAdapter.InsertCommand.Transaction = transaction;
dataAdapter.UpdateCommand = commandBuilder.GetUpdateCommand();
dataAdapter.UpdateCommand.Transaction = transaction;
dataAdapter.DeleteCommand = commandBuilder.GetDeleteCommand();
dataAdapter.DeleteCommand.Transaction = transaction;
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
for (int i = 1025000; i < 1050000; i++)
dataTable.Rows.Add(i, "FirstName" + i, "LastName" + i);
dataAdapter.Update(dataTable);
transaction.Commit();
connection.Close();
Second approach:
FbConnection connection = new FbConnection(connectionString);
connection.Open();
FbBatchExecution batch = new FbBatchExecution(connection);
for(int i = 1050000; i < 1075000; i++)
batch.SqlStatements.Add("INSERT INTO TestTable VALUES(" + i + ",
'FirstName" + i + "', 'LastName" + i + "'); ");
batch.Execute(false);
connection.Close();
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Firebird-net-provider mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider