怎样提高ADOQuery1->ExecSQL();的运行速度?

erdgzw 2007-09-04 12:53:21
由于需要我使用ADOQuery1->SQL->Add("INSERT INTO ....")添加了数百条记录,然后再ADOQuery1->ExecSQL();
可是发现好慢,需要10多秒钟才能执行完。而且我要重复执行这样的动作很多次,这样一来就更慢了,大家说这可怎么办啊?
有没有办法提高一下速度。
...全文
124 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
erdgzw 2007-09-05
  • 打赏
  • 举报
回复
谢谢僵哥,速度大约提高了5倍左右。
flowercity 2007-09-04
  • 打赏
  • 举报
回复
建议存储过程

僵尸的方法不错,偶以前可没想到
呵呵
僵哥 2007-09-04
  • 打赏
  • 举报
回复
刚测试过了,没有问题(环境:Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) + Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) )。

不知道楼主使用的是什么数据库,上面的使用分号分隔是针对MSSQL,其它数据库请找相关资料。有些可能支持批量的事务,有些可能不支持。
僵哥 2007-09-04
  • 打赏
  • 举报
回复
看是什么异常,在异常的地方分段。也就是可以调整一个事务的大小。多个事务放在同一语句当中我很少有用过,一般是使用查询分析器的时候使用过,目前没有环境调试。另外,同一个事务当中不知道是否允许使用分号分隔。
erdgzw 2007-09-04
  • 打赏
  • 举报
回复
僵哥,使用了你的办法,可是产生了异常:

begin tran;
insert....1;
...
insert....50;
commit tran;
异常就是在这里产生的
begin tran;
insert....51;
...
insert....100;
commit tran;
huzhangyou 2007-09-04
  • 打赏
  • 举报
回复
可以使用存储过程的处理方法
僵哥 2007-09-04
  • 打赏
  • 举报
回复
比如你是
insert....1;
insert....2;
insert....3;
insert....4;
insert....5;
insert....6;
...

这样一批语句,你可以进行分段添加begin tran/commit tran
begin tran;
insert....1;
...
insert....50;
commit tran;
begin tran;
insert....51;
...
insert....100;
commit tran;
...
erdgzw 2007-09-04
  • 打赏
  • 举报
回复
僵哥,你可以说的具体一点吗,如何避开隐式事务?如何添加显示事务?
僵哥 2007-09-04
  • 打赏
  • 举报
回复
批次处理是好事,但是要注意避开隐式事务所产生的负面影响,并考虑一下服务器的内存资源。
对于隐式事务的问题,可以通过采用在语句当中分段添加显示事务避开,对于服务器内存资源的问题,可以通过减小批量来达到目的。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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