社区
C++ Builder
帖子详情
怎样提高ADOQuery1->ExecSQL();的运行速度?
erdgzw
2007-09-04 12:53:21
由于需要我使用ADOQuery1->SQL->Add("INSERT INTO ....")添加了数百条记录,然后再ADOQuery1->ExecSQL();
可是发现好慢,需要10多秒钟才能执行完。而且我要重复执行这样的动作很多次,这样一来就更慢了,大家说这可怎么办啊?
有没有办法提高一下速度。
...全文
124
9
打赏
收藏
怎样提高ADOQuery1->ExecSQL();的运行速度?
由于需要我使用ADOQuery1->SQL->Add("INSERT INTO ....")添加了数百条记录,然后再ADOQuery1->ExecSQL(); 可是发现好慢,需要10多秒钟才能执行完。而且我要重复执行这样的动作很多次,这样一来就更慢了,大家说这可怎么办啊? 有没有办法提高一下速度。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
批次处理是好事,但是要注意避开隐式事务所产生的负面影响,并考虑一下服务器的内存资源。
对于隐式事务的问题,可以通过采用在语句当中分段添加显示事务避开,对于服务器内存资源的问题,可以通过减小批量来达到目的。
Delphi
ADOQuery
的一些操作
Prepared用来确定
ADOquery
是否要准备好了再查询,如设为true,则系统会先编译后再
运行
,在多次重复使用某一查询的情况下能有效提升
运行
速度
,但对于只执行一次的查询反面会导致
速度
下降(编译会消耗时间):
adoquery
.sql....
用ADO控件操作Excel的.xls文件的最详细的教程(2013.11.29首发)
用ADO操作Excel的.xls文件有
速度
快,可以在一定条件下突破Excel的总行数限制(超过这个行数限制在Excel中操作可能会有问题),操作具有真正的隐秘性等优点。 而用OLE操作Excel文件有两个弊端,一是操作的效率较低...
Delphi实现sql 复制编程
{ Copyright (c) 咏南工作室 2006 作者: 陈新光 ... QQ: 254072148 手机: 13025531017 ...TODO: 断网收银以及总部和各门店间的数据通讯(通过复制方法实现) ....首先要安装ActivX控件:component->import active
delphi技巧集锦之一
删除dbgrid中选定数据的方法:begin adotable1.Delete; adotable1.first;若要追加和修改信息:adotable1.Append;adotable1.post;------------------------------------------------将数据写入库:procedure ...
Delphi数据库处理
在应用程序中,需要调用Open方法或者ExecSQL 方法来执行在SQL 中的命令。在设计阶段,可以利用属性编辑起来编写。 例如: Width
ADOquery
do Begin //重新写入时,要关闭原来的查询 Close; width ...
C++ Builder
13,825
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章