插入记录(30分)

  • 主题发起人 主题发起人 su-100
  • 开始时间 开始时间
S

su-100

Unregistered / Unconfirmed
GUEST, unregistred user!
从Table1中向Table2插入记录, Table1中有100 条记录,计算后需向
Table2插入多条记录如:130条,因此用,Insert,Post方法,速度太慢,
谁有高招?

table1.open;
table2.open;

while table1.efo<>true then
begin

计算过程;
.....
Table2.insert;
table2.fieldbyname('a').asstring:=
table1.fieldbyname('a').asstring;

table2.fieldbyname('b').asstring:=
table1.fieldbyname('b').asstring;
table2.post;
...

next;
end;


另在一个过程中同时用table,query有错误信息:
function se...

 
1。只有那样了,不知道改用SQL会不会快点
2。贴代码看看
 
INSERT INTO T1 (A,B)
VALUES
(
SELECT A,B FROM T2
WHERE ...
)
 
不会吧?一条一条地插入?那不是太......
何不用一个语句搞定:
Query1.Sql.Text := 'insert into table2 (a, b) select a,b from table1';
Query1.Execsql;
 
Table2插入的记录是不定的,
这次2条,下次可能3条,再下次可能4条,难道没有看见我的计算过程吗?
我很清楚Query的优点,分虽少,但问题不是那么简单
 
所以我给你加了个WHERE嘛
要么计算时,加个标志咯
其它就没办法了
要么在一条条查前先DISABLECONTROL,完了ENABLECONTROL一把咯
 
简单的说,如何在TABLE中加快INSERT的速度?
 
向TABLE2 中插记录但计算条件来自于TABLE1,
 
如果两个表结构完全一样,可以用TBatchMove 或 用BDE得记录拷贝,
把Table1 得某条记录拷贝到Cache,再从Cache拷贝到Table2,比挨字段复制
要快得多
 
答案均不满意,30分先放着.
我自己想办法
 
何必每次post ,全部insert后再post试试.
 
先计算好需要插入的记录,存在 table1 中,如:100条变成了 130 条,然后关闭 table1,
再运行 Query,其 SQL 为上述的 SQL 语句: insert into table2 select * from table1
 
Table 的缓存更新
用事务
Insert完毕更新
Commit
 
1.同意yubo,用事务
2.用tquery
3.使用prepare/unprepare一次提交.

 
多人接受答案了。
 
后退
顶部