ADO.NET操作Oracle大批量数据插入性能优化问题?

qq315644526 2011-06-23 03:54:56


//该方法执行批量添加操作
public void Execute_In_Up_De(List<string> sql_list)
{
OracleConnection connection = null;
OracleCommand command =null;
OracleTransaction transaction=null;
try
{
using (connection = new OracleConnection(strcon))
{
connection.Open();
command = connection.CreateCommand();
transaction = connection.BeginTransaction();
command.Connection = connection;
command.Transaction = transaction;
//每一个item对象就为一条sql语句
foreach (string item in sql_list)
{
command.CommandText = item;
command.ExecuteNonQuery();
}
transaction.Commit();
}
}
catch (Exception ex)
{
if (transaction != null)
{
transaction.Rollback();
}
throw ex;
}
finally
{
if (connection != null)
{
connection.Close();
connection.Dispose();
}
}
}
//该方法执行时数据量小的情况下性能还可以,但 sql_list 里面数量上 万 时性能就慢下来
//想换成调用Oracle存储过程的方式,Oracle存储过程如何写才能达到最大优化求高人指点

...全文
278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq315644526 2011-06-24
  • 打赏
  • 举报
回复
感谢给位关注,问题以采用 外部表方式解决
机器人 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qq315644526 的回复:]

引用 6 楼 fangxinggood 的回复:
每1000条(经验值)提交一次,效果要比最后一次提交速度快

问题是 存储过程怎样写才能最大优化,是一次把几万条sql语句当做存储过程参数传入 然后再没1000条提交一次还是什么
[/Quote]
存储过程也是LOOP INSERT。参数是以数组方式传入。
另外,SQL文长度也是有限制的,这个你要注意。所以传输的时候,只传数据好些。
qq315644526 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liuchaolin 的回复:]
你可以考虑用存储过程
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
INSERT test1.dbo.titles SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
[/Quote]
哥们,你这写的是啥
qq315644526 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fangxinggood 的回复:]
每1000条(经验值)提交一次,效果要比最后一次提交速度快
[/Quote]
问题是 存储过程怎样写才能最大优化,是一次把几万条sql语句当做存储过程参数传入 然后再没1000条提交一次还是什么
机器人 2011-06-23
  • 打赏
  • 举报
回复
每1000条(经验值)提交一次,效果要比最后一次提交速度快
ycproc 2011-06-23
  • 打赏
  • 举报
回复
能用存储过程的就用存储过程
程序的代码看层级就知道 层级多了 运行效率低下
md5e 2011-06-23
  • 打赏
  • 举报
回复
你可以考虑用存储过程
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
INSERT test1.dbo.titles SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
子夜__ 2011-06-23
  • 打赏
  • 举报
回复
改为存储过程 对比一下速度

变态点的SQLLOAD
qq315644526 2011-06-23
  • 打赏
  • 举报
回复
先自己顶下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧