delphi+Oracle插入效率问题

hyrongg 2007-04-24 05:10:09
写了一个再简单不过的存储过程:

SQL> CREATE TABLE TBL(ID NUMBER PRIMARY KEY,NAME VARCHAR2(30));

Table created

SQL> CREATE OR REPLACE PROCEDURE MYTESTPRO
2 AS
3 BEGIN
4 INSERT INTO TBL(ID,NAME) VALUES(AISEC.NEXTVAL,'MYTEST');
5 END;
6 /

目的是为了测试delphi调用oracle存储过程插入纪录的效率

我用adoconnection+ADOStoredProc
还有用OraSession+OraStoredProc
循环call存储过程,效率非常低,每秒钟几条纪录,
但我在Pl/SQL里面直接Call存储过程,非常快,


delphi这么循环调用存储过程:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to 5000-1 do
begin
orastore.ExecProc;
end;
end;


哪位大虾能够探讨一下这个问题?


...全文
345 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tod707070 2007-05-12
  • 打赏
  • 举报
回复
我自己写了一个程序,尝试使用delphi插入数据,其实效果非常慢.后来我直接使用delphi先把要插入的数据写到本地文件中,再用写一个.ctl文件,最后利用delphi自动调用Oracle的sqlldr装载数据,这个效果不错,一分钟插入十几万条数据不成问题.
hyrongg 2007-04-27
  • 打赏
  • 举报
回复
ls的方法曾经考虑过,但实际情况不能这么操作

顶起来,还有什么高招?

不可能delphi数据控件+oracle一分钟1000条不到的数据量吧,
应该不会这么弱
redher 2007-04-25
  • 打赏
  • 举报
回复
循环call存储过程.每次循环都是一次数据库的交互.这是很浪费时间的.

我处理都是在程序中写
SQL.Add('insert into table values())
SQL.Add('insert into table values())
SQL.Add('insert into table values())
然后一起执行.
还有orcale SQL语句有这种
insert into table1(f1,f2) select f3,f4 from table2
这样可以添加一个数据集.

还有关闭orcale归档模式,也同样提高数据修改的效率.

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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