//第一步从MySql数据库中的10个表中取出记录(公约5000条左右)
MySqlDataReader Readers=MySqlToSqlServerMethod.SelectRecords();
//第二步将取出的记录逐条插入SqlServer数据库中的一个表中
while (Readers.Read())
{
//逐条插入数据
}
以上方法运行时,在第二部非常耗时。如果第一步返回的记录上万,第二步的while 循环更慢。请问有什么好方法能比较快速的将一个Readers插到另一个库中的表中么?
SqlTransaction tran = tb_Variety_myConnection.BeginTransaction();
SqlBulkCopy bulkCopyOrders = new SqlBulkCopy(tb_Variety_myConnection, SqlBulkCopyOptions.KeepNulls, tran);
bulkCopyOrders.DestinationTableName = "tb_Price";
bulkCopyOrders.ColumnMappings.Add("**", "iVarietyID_FK");
bulkCopyOrders.ColumnMappings.Add("**", "sMain");
bulkCopyOrders.ColumnMappings.Add("**", "dDate");
bulkCopyOrders.ColumnMappings.Add("**", "dTime");
bulkCopyOrders.ColumnMappings.Add("**", "mOpen");
try
{
bulkCopyOrders.WriteToServer(thisDataSet.Tables[0]);
tran.Commit();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
那么Select也是这个道理么?我是用程序拼字符串,拼出一条Sql语句,然后传给一个方法返回一个MySqlDataReader。如下:string mySelectSqlStr = 查询Sql语句;
return ConnectionSqServer.getmysqlread(mySelectSqlStr);如果返回的记录很多,这个返回过程也很慢。而且我的select语句返回的是个多表记录,如:
“select * from table1 where id<'100' union all select * from table2 where id<'100' union all ........”
这样的查询怎么优化,能让MySqlDataReader返回的快一点?
意思是,多步插入改为一步插入?如果能够多步insert 也只开一个事务的话,求贴代码
2.封装成一个包事务感觉是提供一种和数据库链接的机制,如,异常可以捕获回滚
using(Trsanctionscope事务操作