TADOQuery遍历速度?

hjiaming 2007-01-17 10:56:26
TADOQuery有没有办法提高遍历速度
下面的代码,在3000多行记录,8列,就要0.5秒左右,那上万了就更受不了了

int nRowCount = ADOQuery1->RecordCount;
int nColCount = ADOQuery1->Fields->Count;
ADOQuery1->First();
for(int irow = 0; irow < nRowCount; irow++)
{
for(int icol = 0; icol < nColCount; icol++)
{
m_pDataTable[irow][icol] = ADOQuery1->Fields->Fields[icol]->Value;
}
ADOQuery1->MoveBy(1);
}
...全文
756 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
AdoQuery .CacheSize
ExecuteOptions.eoAsyncFetch=true
LockType:=ltReadOnly
wanglovec 2007-04-09
  • 打赏
  • 举报
回复
LZ加索引了么??
wanglovec 2007-04-09
  • 打赏
  • 举报
回复
我也试了, ADO + ODBC + ACCESS, 30万记录, 扫描一遍要1-2小时, 只是每条记录取两个字段,不涉及显示的,只取出数据保存到缓冲区。
>>ADO+OLEDB比较快  ODBC 就不要用了.
sanyou98 2007-04-09
  • 打赏
  • 举报
回复
换控件吧
数据量大的话用adoquery怎么优化代码都不能让速度有质的飞跃
Jim@luckeeinc.com 2007-04-03
  • 打赏
  • 举报
回复
可以设置多少笔显示的 一般很少一下子显示出几十万笔数据来操作 找一找都要找残废
n27741 2007-04-02
  • 打赏
  • 举报
回复
关注!
最近做报表 也是感觉ADOQuery超级慢啊,郁闷死我了....
panjinfu80 2007-04-01
  • 打赏
  • 举报
回复
这么多循环不慢才怪。
sczyq 2007-04-01
  • 打赏
  • 举报
回复
加进度条

ahjoe 2007-04-01
  • 打赏
  • 举报
回复
我也试了, ADO + ODBC + ACCESS, 30万记录, 扫描一遍要1-2小时, 只是每条记录取两个字段,不涉及显示的,只取出数据保存到缓冲区。
LuoGD 2007-03-30
  • 打赏
  • 举报
回复
设置adoQuery的CursorType为ctStatic,LockTyp为ltReadOnly
wt_sanlian 2007-03-29
  • 打赏
  • 举报
回复
你要把那么多的记录显示在界面上干嘛,让用从几万条记录中选择一条吗?

应当从界面操作上来避免这种问题!
daily66 2007-03-28
  • 打赏
  • 举报
回复
我也想知道这个如何解决
cheese 2007-03-28
  • 打赏
  • 举报
回复
我也碰到了同样的问题,同样的数据操作,BDE在8秒钟完成,而ADO居然用了5分20秒,记录总数是18万条左右。经过测试,的确慢在Next或者MoveBy上。
hjiaming 2007-01-18
  • 打赏
  • 举报
回复
试了,下面这样比原先要快很多,难道是ADOQuery1->Next太慢?

int nRowCount = ADOQuery1->RecordCount;
int nColCount = ADOQuery1->Fields->Count;
ADOQuery1->First();
for(int irow = 0; irow < nRowCount; irow++)
{
for(int icol = 0; icol < nColCount; icol++)
{
m_pDataTable[irow][icol] = (tagVARIANT)(ADOQuery1->Recordset->Fields->Item[icol]->Value);
}
ADOQuery1->Recordset->MoveNext();
}
daydayup234 2007-01-17
  • 打赏
  • 举报
回复
不知道这种情况,多线程有用不
wood542344 2007-01-17
  • 打赏
  • 举报
回复
楼上的Blog看得我眼晕啊,字体这么大,排版好烂啊,难道是我的浏览器的原因吗?
最新版Maxthon应该不会很老啊/
我不懂电脑 2007-01-17
  • 打赏
  • 举报
回复
http://blog.csdn.net/vvvvvvvvvvvvvvvvvvvv/archive/2004/07/23/49435.aspx
勉励前行 2007-01-17
  • 打赏
  • 举报
回复
m_pDataTable[irow][icol] = ADOQuery1->Fields->Fields[icol]->Value;
如果要將數據放進數組中進行計算。用ADO快不多少的。設置ADOQuery為單向只讀數據集就快些,但改用 DBX 的單向數據集就快很多。

這與服務器無關,討論的是10000條數據全部取回本地後的遍歷速度。
在 2G 256M的PC機上,單向ADO數據集遍歷一次的速度約3秒,而DBX就快多了。

構造函數:

ADOQuery1->Open();

OnClick事件:

int nRowCount = ADOQuery1->RecordCount;
int nColCount = ADOQuery1->Fields->Count;
ADOQuery1->First();
for(int irow = 0; irow < nRowCount; irow++)
{
for(int icol = 0; icol < nColCount; icol++)
{
m_pDataTable[irow][icol] = ADOQuery1->Fields->Fields[icol]->Value;
}
ADOQuery1->Next();
}

如果數據量很大,想辦法分段計算。能交給服務器計算就最好了。
hjiaming 2007-01-17
  • 打赏
  • 举报
回复
m_pDataTable[irow][icol]

Variant** m_pDataTable;

现在发现慢主要是因为ADOQuery1->MoveBy(1);或者ADOQuery1->Next();
CACACACACA 2007-01-17
  • 打赏
  • 举报
回复
"m_pDataTable[irow][icol]" 是什么东东-----"虚拟数据集"
不同的东西可以采用不同的技巧.

加载更多回复(1)
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

1,178

社区成员

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

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