DB 테이블의 한 field만을 텍스트 파일로 보내려고 합니다.
현재 소스 상태로는
......
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select url from SiteDB order by url');
ADOQuery2.Open;
....
for i:=1 to ADOQuery2.RecordCount do
begin
Writeln(FP, Trim(ADOQuery2.Fields[0].AsString) );
ADOQuery2.Next;
end;
....
대략 이렇습니다.
근데 이렇게 하다보니 Record갯수가 많아지면, 시간이 무진장 걸리더군요.
그냥 쿼리 분석기에서 돌리면 90000개에 한 6초면 나오는데, 프로그램 상에서 텍스트 파일로 찍으면 거의 2~3분이상이 걸리는 것 같습니다.
코딩 상에서 좋은 방법이 없을까요. 조언을 부탁드립니다.
> DB 테이블의 한 field만을 텍스트 파일로 보내려고 합니다.
> 현재 소스 상태로는
>
> ......
>
> ADOQuery2.Close;
> ADOQuery2.SQL.Clear;
> ADOQuery2.SQL.Add('select url from SiteDB order by url');
> ADOQuery2.Open;
>
> ....
>
> for i:=1 to ADOQuery2.RecordCount do
> begin
> Writeln(FP, Trim(ADOQuery2.Fields[0].AsString) );
>
> ADOQuery2.Next;
>
> end;
>
> ....
>
> 대략 이렇습니다.
>
> 근데 이렇게 하다보니 Record갯수가 많아지면, 시간이 무진장 걸리더군요.
> 그냥 쿼리 분석기에서 돌리면 90000개에 한 6초면 나오는데, 프로그램 상에서 텍스트 파일로 찍으면 거의 2~3분이상이 걸리는 것 같습니다.
>
> 코딩 상에서 좋은 방법이 없을까요. 조언을 부탁드립니다.
사용디비를 Direct Access 할수있는 API 를 사용하심이 가장빠를듯싶은데..
이건 쉬운일이아니고..
쿼리 오픈후에 FetchAll 을써서 로컬로 Result set 을 다 가지고 와서
Text Out loop 돌리는것이 조금 도움이 될듯싶네여.