小弟学PDA开发,现在要复制数据表,我的数据表中有50多万调记录,要将以数据库表中间符合某条件的提取出来放到另一数据库的表中。我写了段代码,这代码要等半天才复制完。
请问高人怎么样可以让数据处理快一点啊~~~~?
下面是我写的代码:
public static void CopyTable(SqlCeConnection srcConnection,SqlCeConnection destConnection,
string queryString,string destTableName)
{
SqlCeCommand srcCommand = srcConnection.CreateCommand();
srcCommand.CommandText = queryString;//这参数是查询语句(select * from 数据源表名 where 条件)
SqlCeCommand destCommand = destConnection.CreateCommand();
destCommand.CommandText = @"Delete from " + destTableName;
destCommand.ExecuteNonQuery();
destCommand.CommandType = CommandType.TableDirect; //基于表的访问,性能更好
destCommand.CommandText = destTableName;//这是目的数据库表名
try
{
SqlCeDataReader srcReader = srcCommand.ExecuteReader();
SqlCeResultSet resultSet = destCommand.ExecuteResultSet(
ResultSetOptions.Sensitive | //检测对数据源所做的更改
ResultSetOptions.Scrollable | //可以向前或向后滚动
ResultSetOptions.Updatable); //允许更新数据
object[] values;
SqlCeUpdatableRecord record;
while (srcReader.Read())
{
// 从源数据库表读取记录
values = new object[srcReader.FieldCount];
srcReader.GetValues(values);
// 把记录写入到目标数据库表
record = resultSet.CreateRecord();
record.SetValues(values);
resultSet.Insert(record);
}
srcReader.Close();
resultSet.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
------解决方案--------------------------------------------------------
五十万记录,不小啊,不会太快的,关闭事务和日志会快点
------解决方案--------------------------------------------------------
楼主很强吗?先收藏下!
------解决方案--------------------------------------------------------
来看看……
------解决方案--------------------------------------------------------
来看看
------解决方案--------------------------------------------------------
支持
------解决方案--------------------------------------------------------
将需要进行条件搜索字段加上索引。。
------解决方案--------------------------------------------------------
索引
------解决方案--------------------------------------------------------
怎么不用存储过程实现?
用 forall 一次性插入