如何才能在最短的时间内将有10万条记录的数据集中的数据全部插入数组?
我以前的做法是
ADOQuery.First;
i:=0;
while not ADOQuery.Eof do
begin
reclist[i].id:=ADOQuery.fieldbyname('id').asstring;
......
inc(i);
ADOQuery.next;
end;
可这样太慢,有没有好的方法?不胜感激!!!!
我以前的做法是
ADOQuery.First;
i:=0;
while not ADOQuery.Eof do
begin
reclist[i].id:=ADOQuery.fieldbyname('id').asstring;
......
inc(i);
ADOQuery.next;
end;
可这样太慢,有没有好的方法?不胜感激!!!!
解决方案 »
- ToolBar1中的ToolButton1我想调整其高度怎么设置才能调整?
- 高分求图标按钮控件
- socket数据包如何 定义?
- 怎样屏蔽掉窗口的最大化按钮和最小化按钮?使他们变成灰色?
- 谁给提个醒~在线等待。
- 如何将自己定义的记录类型转化成Tmemorystream对象?
- delphi控件编写-怎样实现设计时菜单和动作行为?
- 请问如何将加密狗里面的用vc编成的obj封装成delphi编译的dll动态连接库,请大家帮帮忙啊,只有这么多分,山穷水尽了,无尽痛苦之中!
- 关于树形链表,指针的问题
- 我要开一家私人的软件公司,小投入50万,请问各位大虾,像这样的小软件公司要想发展,应该走一条什么样的道路,应该去开发些什么软件呢??
- 关于dll问题,请高手帮忙!急,在线等!
- 做dll的相关问题,请各位高手不吝赐教!
再者避免数字 字符串的转换也能提高速度
将你的产生数据集的条件,保存出来,尽量改成用(insert 字段表 select 字段表 where 条件)格式,再用Query执行。保证提高N倍!
AdoQuery1.close;
AdoQuery1.sql.clear;
AdoQuery1.sql.text:='insert 字段表 select 字段表 where 条件'
AdoQuery1.ExecSql;
數據記錄到數組, 就我知道,并沒有很多的方法,
但你一次要導這麼多記錄, 是不是考慮你的實現有問題???
1 如果是更新操作(insert、update、delete),用ADOCommond组件执行sql语句要比query效率高。
2 用for循环要比while的效率高
3 如果可能把表分块操作
4 用存储过程或触发器实现
我的e_mail:[email protected]
[email protected]
begin
MoveFirst;
while not EOF do
begin
FBegDateStrs.Add(Fields['BEG_DATE'].Value); //FBegDateStrs is a TStringList
FEndDateStrs.Add(Fields['END_DATE'].Value); //FEndDateStrs is a TStringList
MoveNext;
end;
end;用 RecordSet 会比直接操作ADOQ快上100倍,呵呵
使用原生ADO是一个好办法,并且ADOQuery本身也有一些属性通过设置后可以改善性能的:
CachSize = 1000 //这个CachSize在对于大量数据的存取时是性能比较高的
CursorType = ctOpenForwardOnly
LockType = ltReadOnly //因为你是只用于一个循环的只读数据,这两项属性也能一定程度上改善性能