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是比较慢
建立索引 存储过程。