社区
数据库相关
帖子详情
ADO的效率慢慢降低,原因何在?高手请进!!!
hacker_lsw
2002-12-19 05:45:50
for......
1、ADOdataset1从数据库取数据(1000条取一次)
2、把ADOdataset1的数据付值给ADOdataset2(1000条付值一次)
3、提交ADOdataset2的数据(1000条提交一次)
继续下1000条
一共有100万条
开始的1000条快,后来越来越慢。到50万的时候,1000条要好久好久,好象死了一样!
请教问题出在什么地方??
能解决给300分,决不失言!
...全文
39
19
打赏
收藏
ADO的效率慢慢降低,原因何在?高手请进!!!
for...... 1、ADOdataset1从数据库取数据(1000条取一次) 2、把ADOdataset1的数据付值给ADOdataset2(1000条付值一次) 3、提交ADOdataset2的数据(1000条提交一次) 继续下1000条 一共有100万条 开始的1000条快,后来越来越慢。到50万的时候,1000条要好久好久,好象死了一样! 请教问题出在什么地方?? 能解决给300分,决不失言!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hacker_lsw
2002-12-27
打赏
举报
回复
to INeedCa(缺钙) :
是的,我以前的做法是:一直累加到ADOdataset2中,没有清除。
现在的做法是:累加一段到1000条后,关闭,用我的WHERE语句再打开,
这样ADOdataset2中的数据量又为零了
不知道你有什么好办法,清除ADOdataset2中的数据呢?
INeedCa
2002-12-25
打赏
举报
回复
楼主,你的意思是说,ADOdataset2中的数据一直没有清除还是,ADOdataset2在获取元数据的时候从数据库中将所有的数据都拎过来了?
hacker_lsw
2002-12-24
打赏
举报
回复
解决办法:
各位可以继续讨论!
发言者有分!
本楼以上的兄弟全部到
http://expert.csdn.net/Expert/topic/1296/1296001.xml?temp=.8862421
取分,本贴继续讨论!
我现在用SQL语句select 出来的时候设WHERE 1<0 这样数据量一直都是0
基本解决我的问题!
hacker_lsw
2002-12-24
打赏
举报
回复
问题找到了!
不好意思,最近太忙!
问题出在post上!(采用updatebatch()方式)
同样的数据集,在内存中操作
如果数据量为零,插入一条数据,post用时7毫秒(没有写到数据库)
如果数据量为1000000,插入一条数据,post用时>1秒(没有写到数据库)
差别如此之大!
newyj(吴刚vs西西弗)的原理是对的!
hacker_lsw
2002-12-19
打赏
举报
回复
已经设为clUseServer了!
我个人认为是第2步的问题。
取数据和提交数据问题不大,就是从数据集1复制到数据集2的时候时间逐渐增长!
等我按newyj(吴刚vs西西弗)的方法测试过了,再看看问题是不是第2步!
zsy_good
2002-12-19
打赏
举报
回复
用Tadoquery
CursorLocation 改为 clUseServer
速度可以提高一倍
,我用几十万条测试过.数据越多越快
hacker_lsw
2002-12-19
打赏
举报
回复
我正有此打算!
newyj
2002-12-19
打赏
举报
回复
GetTickCount计一下时间,写个日志分析一下。
why101
2002-12-19
打赏
举报
回复
up
hacker_lsw
2002-12-19
打赏
举报
回复
多谢这么多兄弟来帮忙!
我跟踪了一下,问题出在第1步或第2步。
第3步没有问题,提交给数据库的时候,时间前后都一样!
yekehe
2002-12-19
打赏
举报
回复
同意楼上cut掉聚集索引
newyj
2002-12-19
打赏
举报
回复
主要看你的索引类型,比如你选用了聚集索引,插入了50万条以后,你插入一条但他的索引值最小,插入一条的时间可能就是你插入50万条的时间,虽然没有这么夸张但原理如此,你后面插入一条的时间是你前面的几倍几十倍。
你不建索引试试,或去调聚集索引
zwhhoo
2002-12-19
打赏
举报
回复
我也觉得是慢在数据库的取值上,越向后搜索的数据范围越大,所以越慢。
Billy_Chen28
2002-12-19
打赏
举报
回复
如有人能用ADO方式不变,并且还能解决楼主这个问题,我也给他100分
findcsdn
2002-12-19
打赏
举报
回复
ado是微软提供的组件,delphi只是封装了windows提供的许多接口。
如果前面的50万条数据处理都没有问题,我想ado是没有问题的。
有没有考虑过不是ado的问题,或者是数据库的问题呢?
hacker_lsw
2002-12-19
打赏
举报
回复
那用什么呀?
bigysw
2002-12-19
打赏
举报
回复
很悲哀的方法,就是不用ADO。呵呵
hacker_lsw
2002-12-19
打赏
举报
回复
能详细一点吗?
以前有什么解决办法,我也想试试!
bigysw
2002-12-19
打赏
举报
回复
这个问题有人问过多次,从来没有好的解答,普遍认为是delphi的内存管理不力。
ADO
助手V1.20---一个获取
ADO
连接字符串,测试SQL命令的辅助软件
ADO
助手---一个获取
ADO
连接字符串,测试SQL命令的辅助软件 2010-09-06 +初始版本发布
ADO
助手---一个获取
ADO
连接字符串,测试SQL命令的辅助软件 2010-09-06 +初始版本发布 2011-11-09 -修复有时候用DataGrid显示报错“The rowset is not bookmarkable.” +增加根据SQL生产MFC数据库类的功能 +增加导入和导出记录集的功能 +增加对多记录集的支持功能 +增加常用的
ADO
连接字符串的下拉选择 2012-09-19 +增加C#数据库代码生成
LabSQL数据库工具包(完整版)
下载后直接将解压文件夹复制到labview安装文件目录下的user.lib,例如C:\Program Files\National Instruments\LabVIEW 8.6\user.lib,其他版本亦然 LabSQL 1.1a,网上这个版本很多,但大多数资源都缺几个函数,完整版的大小1.11MB,如果有大小是1.1MB的版本,它里面肯定缺几个函数,分别是查找记录:
ADO
Recordset Find.vi;删除记录:
ADO
Recordset Delete Record.vi;添加新记录:
ADO
Recordset Addnew.vi;设定字段:
ADO
Set Field Value.vi。大家下载时请注意
winform控件与
ADO
.NET
ADO
.NET的名称起源于
ADO
(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用
ADO
.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。
同时打开多端口的通信程序
采用Socket通讯协议进行 一个可以同时打开多端口 客户端及服务端通信的 自定义命令解析试验程序。 里面抱含了一个原生数据库
ADO
操作类,初数sockt及
ADO
数据库操作者很值得一看。
为什么Delphi会自动截断小数点位数!?help me !!!
转成字符存进去是一个效果(会自动截断) 后经
高手
指点 在
ado
dataset的beforeopen中写一句
ado
rsMain.EnableBCD:=false 就搞定了!看看delphi关于这一点的帮助系统,查询关于TFloatValue 类型,以及FloatToDecimal的过程,相信你会找到答案 我的数据库为SQL2000,其中有一个
数据库相关
2,496
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章