通过ADO更新mysql表,2600条,用了30秒。太慢了,该怎么写?我觉得应该在5秒以内才正常吧
代码:
procedure TForm1.Button2Click(Sender: TObject);
var
I: integer;
a,b ,c,s: string;
wp: pYC_DEFINE;
rfloat :string;begin
rfloat := '%.2f';
with ADOQuery1 do
begin
ADOQuery1.Open;
for I := 0 to gyclist.Count - 1 do
begin
ADOQuery1.sql.clear;
wp := gyclist.Items[I];
a:= InttoStr(wp^.m_wsite);
b:= wp^.m_nno;
c := IntToStr(wp^.m_wsite);
ADOQuery1.SQL.Add('update as_yc_define set DATA_VALUE='''+c+''''+' where (YC_DATA_ID='''+b+''')');
ADOQuery1.ExecSQL; //执行的这一句太慢
end;
end;
ADOQuery1.Close;
end;
代码:
procedure TForm1.Button2Click(Sender: TObject);
var
I: integer;
a,b ,c,s: string;
wp: pYC_DEFINE;
rfloat :string;begin
rfloat := '%.2f';
with ADOQuery1 do
begin
ADOQuery1.Open;
for I := 0 to gyclist.Count - 1 do
begin
ADOQuery1.sql.clear;
wp := gyclist.Items[I];
a:= InttoStr(wp^.m_wsite);
b:= wp^.m_nno;
c := IntToStr(wp^.m_wsite);
ADOQuery1.SQL.Add('update as_yc_define set DATA_VALUE='''+c+''''+' where (YC_DATA_ID='''+b+''')');
ADOQuery1.ExecSQL; //执行的这一句太慢
end;
end;
ADOQuery1.Close;
end;
2、将gyclist中的内容存入表中,连接替换。
假设是LSB,字段 ID,C
update as_yc_define A INNER JOIN LSB B ON A.YC_DATA_ID=B.ID set DATA_VALUE=B.C
再替换