![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с потоками [D6, XP]
webpauk © (2007-04-24 11:20:00)
type
TDoc = class(TObject)
private
fID: Integer;
fOwner: TObject;
fCount: Integer;
fArr: array of TObject;
fIDDocType: Integer;
procedure Activate;
protected
constructor Create(Owner: TObject; IDValue: Integer);
end;
procedure TDoc.Activate;
var
I: Integer;
Log: Boolean;
begin
Query.SQL.Text:='Select ...';
Query.Active:=True;
fIDDocType:=Query.FieldByName('IDDocType').AsInteger;
Query.SQL.Text:='Select ...';
Query.Active:=True;
while not Eof do
begin
SetLength(fArr, fCount+1);
fArr[fCount]:=TDoc.Create(Self, Query.FieldByName('ID').AsInteger);
Inc(fCount);
Next;
end;
for I := Low(fArr) to High(fArr) do
begin
TDoc(fArr[I]).Activate;
end;
end;
в процедуре Activate, как видно производится "Query.select" - и очень много. Занимает много времени.
Может через потоки это будет быстрее?
Если не в лом, подскажите как.
Сергей М. (2007-04-24 11:51:00) [1]
> Занимает много времени
В первую очередь следует обратить внимание на оптимальность самого запроса и на оптимальность структуры данных в БД, к которым в запросе происходит обращение. И только послеэтого обращать взор к потокам.
clickmaker (2007-04-24 11:34:00) [2]
> Может через потоки это будет быстрее?
быстрее не будет, но можно открыть 1 документ, и пока юзер балдеет от увиденного, под ковром докачивать остальные (в потоке)
Сергей М. (2007-04-24 11:28:00) [3]
> Может через потоки это будет быстрее?
Нет, не будет.
Даже не обольщайся.