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怎么优化代码都不能让速度有质的飞跃