C#调用Oracle数据库存储过程的速度很慢,直接在plsql里面执行很快

Sfengj 2016-01-15 03:30:13
我用C#写了个程序执行Oracle的存储过程,但是执行的很慢往往要8,9个小时,而我在plsql里面执行这个存储过程时,只需3,4个小时就完了,这是为什么呢?
C#代码:

try{
OleDbServerDAL.DbHelperOleDb.RunProcedure("DATAIMPORT");
}
catch (Exception ex)
{
SystemLog.WriteLog(ex.Message);
}

/// <summary>
/// 执行存储过程--不带参数执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <returns>DataSet</returns>
public static void RunProcedure(string storedProcName)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
OleDbCommand command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = storedProcName;
command.ExecuteNonQuery();
connection.Close();
}
}

求各位帮忙看一下,谢谢
...全文
1733 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南小鱼 2016-02-19
  • 打赏
  • 举报
回复
执行个存储过程要八九个小时,这是多大的数据量啊?在执行过程中,数据库连接一直占用着,这不是浪费资源么?! 另外,在pl/sql连续执行,某些语句是有缓存的,比起程序调用执行,会快。
  • 打赏
  • 举报
回复
单纯执行语句这部分差别应该不大,可以看下其他地方是不是有浪费资源咯》》??
joyweimao 2016-02-19
  • 打赏
  • 举报
回复
1、存储过程重新编译一下 2、存储过程里语句里涉及的索引可以注意一下,有可能是索引没有生效引起的,可以指定索引
秋的红果实 2016-02-19
  • 打赏
  • 举报
回复
贴出存储过程sql语句,以及不用存储过程的sql语句
吉普赛的歌 2016-02-19
  • 打赏
  • 举报
回复
其实是可能的, SQL Server 里这种情况都是少见不鲜。 把存储过程重新编译一下就好了。
xuzuning 2016-02-19
  • 打赏
  • 举报
回复
待处理的数据规模不同,处理时所需的事件自然也不同 如果经 8,9个小时 处理结束后,立即再处理还要 3,4个小时 的话,你应该考虑一下你的存储过程是否写的有问题了
  • 打赏
  • 举报
回复
的代码只有一条 command.ExecuteNonQuery() 语句而已,剩下的执行过程,全都是你的 Oracle 数据库内部的问题。 除非你的 storedProcName 跟 plsql 所调用的不是同一个。
  • 打赏
  • 举报
回复
应用程序只是用来发送命令的,不是用来执行存储过程的。 如果你说你的 RunProcedure 可能比 “plsql里面执行”慢上1秒钟,我或许可以理解;如果说慢上5个小时,完全不可能理解。
Sfengj 2016-02-18
  • 打赏
  • 举报
回复
哎哟,没人理
Sfengj 2016-01-15
  • 打赏
  • 举报
回复
这个是把数据从一个数据库导入到另一个数据库的

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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