日期:2014-05-17  浏览次数:20427 次

asp.net 大数据量查询,导入的问题
先从Oracle查询数据(十万以上数据),根据查询结果分析,导入SqlServer的问题?

从Oracle查询的结果放在dataset中,然后分析dataset,在插入Sqlserver,我发现速度很慢!

首先从Oracle查询数据速度慢,我是这样子写的:
查询方法:
  /// <summary>
  /// 执行查询语句,返回DataSet
  /// </summary>
  /// <param name="SQLString">查询语句</param>
  /// <returns>DataSet</returns>
  public static DataSet Query(string SQLString)
  {
  using (OracleConnection connection = new OracleConnection(connectionString))
  {
  DataSet ds = new DataSet();
  try
  {
  connection.Open();
  OracleDataAdapter command = new OracleDataAdapter(SQLString, connection);
  command.Fill(ds, "ds");
  }
  catch (System.Data.OracleClient.OracleException ex)
  {
  throw new Exception(ex.Message);
  }
  return ds;
  }
  }
查询操作:DataSet ds = bll.GetListFromHRMIS("");【这里很慢】
然后分析ds,插入sqlserver,速度很慢,然后我改成事务操作,还是很慢!
插入操作方法:
  /// <summary>
  /// 执行多条SQL语句,实现数据库事务。
  /// </summary>
  /// <param name="SQLStringList">多条SQL语句</param>
  public static int ExecuteSqlTran(List<String> SQLStringList)
  {
  using (SqlConnection conn = new SqlConnection(connectionString))
  {
  conn.Open();
  SqlCommand cmd = new SqlCommand();
  cmd.Connection = conn;
  SqlTransaction tx = conn.BeginTransaction();
  cmd.Transaction = tx;
  try
  {
  int count = 0;
  for (int n = 0; n < SQLStringList.Count; n++)
  {
  string strsql = SQLStringList[n];
  if (strsql.Trim().Length > 1)
  {
  cmd.CommandText = strsql;
  count += cmd.ExecuteNonQuery();
  }
  }
  tx.Commit();
  return count;
  }
  catch
  {
  tx.Rollback();
  return 0;
  }
  }
  }

请教各位高手!要如何处理!

------解决方案--------------------
动态SQL是比较慢

建立索引 存储过程。