我试了以下, 我的表中记录有20000 条执行很慢很慢有没有其它的办法解决。
begin begin
adotable2.First;
while not adotable2.eof do begin
lx1:=adotable2.fieldbyname('leixin').AsString;
adotable2.edit;
adotable2.Post;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.add('select count(t11) as lnfen2 from tk where t11 like ''%'+lx1+'%''');
adoquery2.Open;
lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
adotable2.Edit;
adotable2.fieldbyname('yti').asinteger:=lnfen2;
adotable2.Next;
end;
end;
begin begin
adotable2.First;
while not adotable2.eof do begin
lx1:=adotable2.fieldbyname('leixin').AsString;
adotable2.edit;
adotable2.Post;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.add('select count(t11) as lnfen2 from tk where t11 like ''%'+lx1+'%''');
adoquery2.Open;
lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
adotable2.Edit;
adotable2.fieldbyname('yti').asinteger:=lnfen2;
adotable2.Next;
end;
end;
弄它几十个线程,分成若干段就把它们解决了。
并且不影响主窗口的工作,也不至于导致无响应。
begin begin
adotable2.First;
while not adotable2.eof do begin
lx1:=adotable2.fieldbyname('leixin').AsString;
adotable2.edit;
adotable2.Post;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.add('select count(1) as lnfen2 from tk where t11 like ''%'+lx1+'%''');
adoquery2.Open;
lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
adotable2.Edit;
adotable2.fieldbyname('yti').asinteger:=lnfen2;
adotable2.Next;
end;
end;