读书人

TADOQuery遍历速度?该如何解决

发布时间: 2012-02-16 21:30:36 作者: rapoo

TADOQuery遍历速度?
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);
}

[解决办法]
http://blog.csdn.net/vvvvvvvvvvvvvvvvvvvv/archive/2004/07/23/49435.aspx
[解决办法]
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();
}

如果量很大,想法分段算。能交服器算就最好了。

[解决办法]
我也碰到了同样的问题,同样的数据操作,BDE在8秒钟完成,而ADO居然用了5分20秒,记录总数是18万条左右。经过测试,的确慢在Next或者MoveBy上。
[解决办法]
你要把那么多的记录显示在界面上干嘛,让用从几万条记录中选择一条吗?

应当从界面操作上来避免这种问题!
[解决办法]
设置adoQuery的CursorType为ctStatic,LockTyp为ltReadOnly
[解决办法]
我也试了, ADO + ODBC + ACCESS, 30万记录, 扫描一遍要1-2小时, 只是每条记录取两个字段,不涉及显示的,只取出数据保存到缓冲区。
[解决办法]
这么多循环不慢才怪。
[解决办法]
我也试了, ADO + ODBC + ACCESS, 30万记录, 扫描一遍要1-2小时, 只是每条记录取两个字段,不涉及显示的,只取出数据保存到缓冲区。
> > ADO+OLEDB比较快  ODBC 就不要用了.
[解决办法]
AdoQuery .CacheSize
ExecuteOptions.eoAsyncFetch=true
LockType:=ltReadOnly
[解决办法]
换控件吧
数据量大的话用adoquery怎么优化代码都不能让速度有质的飞跃

读书人网 >C++ Builder

热点推荐