Q&A

  • 이거 저장 속도좀 올려주세요..

저장하는데 시간이 꽤 걸립니다. 레코드양은 20건 미만입니다.
트랜잭션 처리를 하느라고 늦는것 같은데...
빨리 저장시키는 방법을 모르겠습니다.

부탁드립니다.
참고로, 인터베이스6이고요. 델6에서 작업합니다.
로컬로하든 리모트로 작업하든 저장속도는 아뭏든 느립니다.
=====================================================================

While not Eof do
begin


         if Datamodule1.IBTransaction1.InTransaction then
         begin
  
             try

                    With Datamodule1.IBQuery1 do
                    begin
                      close;
                      Sql.Clear;
                      SQL.Add('Insert into pangu');
                      SQL.Add('(cd, PanDate, PanTime)values');
                      SQL.Add('(:cd, :PanDate,:PanTime)')

                      ParamByName('cd').AsString         :=  T;
                      ParamByName('PanDate').AsDate      :=  StrToDate(PanDateVar);
                      ParamByName('PanTime').AsString    :=  PanTimeVAr;
                      ExecSql;

                      Datamodule1.IBTransaction1.Commit;
                    End;

              Except
                    Datamodule1.IBTransaction1.Rollback;
                    Application.MessageBox('저장 실패.',
                                                      'error',MB_OK);
              end;
      end;

              next;

end;
3  COMMENTS
  • Profile
    채승호 2002.01.18 19:13
    통상 insert가 select에 비해 무척 느린 이유 중 하나로 인덱스의 존재를 들 수 있는
    데, 상황에 따라 다르겠지만, 인덱스가 2개 존재하는 상황에서의 insert가 인덱스가 없는 상황에
    서의 insert에 비해 대략 2배 정도 더 소요되었다는 테스트 결과를 본 적이 있습니다.
        유사하게 테스트를 해 보실려면, 아래와 같이 해당 인덱스들을 잠시 unusable한 후 종전의 시
    간과 비교해 보시면 됩니다..

    SQL>alter index XXX인덱스 unusable;


    그리고 커밋위치를 한번 바꾸지요...

  • Profile
    권희수 2002.01.18 18:59

    한건 인서트 할때마다 커밋을 하면
    당근 시간이 많이 걸림니다. 앞의 분이 지적하신부분도
    속도저하를 가져오지만 가장 큰 것은 매번 커밋을 하는거져

    전부 인서트하구난 다음에 커밋을 한번만 하게
    바꾸어 보세여

  • Profile
    이중철 2002.01.18 12:25
    첫째로 기존의 데이타건수가 10만건 이상일때의 대량 데이타

    입력은 해당 테이블의 인덱스키를 없애고 하는것이 정석이죠

    (한건 입력할때 마다 B-tree에서 Insert 루틴을 탈테니)

    그런데 아래에 보니깐 일단 대량의 데이타를 입력하는것이

    아니군요.

    둘째로는 바로 Array로 입력하는 방법입니다.

    전 오라클로 했지만 인터베이스도 Array가 있네요.

    Insert는 어레이가 안되지만 Select는 됩니다.

    즉 레코드가 한건 있는 공Table(오라클에서는 분명히 정식으로 하나

    있는데 이름을 모르겠네요)을 Select 시 어레이로 하여

    인서트 하시면 한번에 입력 하실 수 있을 겁니다.

    물론 이게 델파이에서 된다는 보장은 없습니다. 적어도 ESQL에서는

    확실히 됩니다.

    참고로 SQL 참 재미있습니다. 공부할수록 배울것도 많고(5년전부터

    DB는 그만두었지만) 많이 많이 공부하세요..

    SQL능력자를 찾기가 어렵습니다. 제 경험상 1000명에 5~6명쯤 될까.

    많이 많이 공부하여 능력을 키우세요. 바이요..


    • 전승곤
    • 2002.01.18 20:44
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 채승호
      2002.01.18 22:23
      이렇게 합쳐서 쿼리를 해보세여... report_query.sql.add('where (date_value||time_value  &...
    • 전승곤
      2002.01.19 00:23
      답변감사합니다. 가르켜 주신데로 하였는데요. type mismatch error가 발생합니다. 다시 자세히 좀 부탁...
    • 채승호
      2002.01.19 01:46
        죄송합니다... 저는 당연히 오라클 DB 라고 생각하고 문자형 필드이고   || ...
    • 전승곤
      2002.01.19 18:43
      그러면 paradox db면 사용할 수 있는 방법은 없습니까????? 죄송하지만 한번만 더.......
    • 홍미자
    • 2002.01.18 20:36
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김영범
      2002.01.19 03:15
      답변이 될런지는 모르겠으나 전 현재 델파이 5.0을 쓰고 있습니다. 보통 Resource는 델파이의 특정 콤...
    • 한만교
      2002.01.19 01:50
      프로젝트가 크다면 여러개로 나누세요  Application간 통신을해서 서로 자료를 주고받으면서...
    • 공성환
      2002.01.18 23:02
      정확한 답변은 아니지만... 지금 저도 같은현상으로 리소스를 줄이는 방법을 찾고있죠... 우선 전 델3인...
    • 홍미자
    • 2002.01.18 20:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2002.01.19 01:56
      제가 볼때는 Form3이 최초 ShowModal을 잡고있어서 그런거 같은데요.. 그러니까 Form1을 ShowModal...
    • 까비
    • 2002.01.18 20:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채승호
      2002.01.18 23:12
         TBlobField(FieldByName('이미지필드명')).BlobType := ftBlob;    TBlobField(Fi...
    • 이영주
    • 2002.01.18 20:17
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 채승호
      2002.01.18 22:33
        양쪽다 DBGird인것으로 보니까...   모두 DB와 연결이 되어 있는 것으로 보니까....
    • 장영철
      2002.01.19 02:36
      답변에 감사합니다. 조건을 정해 넣어 한큐에 밀어 넣어 주면 좋을것 같은데 초심자라 아직 감이 안오...
    • 머슴
      2002.01.19 04:00
        --     
    • 장영철
      2002.01.21 20:09
      Query1에 있는 모든 것을 Query2로 옮기는 문제가 아니라 DBGrid1에서 선택된 레코드만 DBGrid2(즉 Query2...
    • ccang111
      2002.01.19 04:59
      어제 오늘 고심하다가...답변도 해주시지도 않고...쩝... 제 컴말고 다른 컴에서 F9눌러서 실행하고 실행...
    • 김태훈
    • 2002.01.18 19:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 버섯
      2002.01.18 20:22
      (1) Stored Procedure 로 여러개의 레코드를 한꺼번에 실행하는방법 (2) 클라이언트쪽에 데몬프로그램을...
    • 성더기
      2002.01.18 20:59
      일단 굳이 재실행을 하실 필요는 없을듯합니다 쿼리나 테이블을 닫았다 열면 적용되어 있을겁니다 단 ...
    • KARA
      2002.01.18 21:37
    • 성더기
      2002.01.18 21:03
      일단 쿼리컴포넌트로 불러온 자료는 ReadOnly입니다 편집이 불가능 하다는 말입져... 꼭 편집을 하고 ...
    • 김영일
      2002.01.19 04:18
    • 하기현
    • 2002.01.18 09:48
    • 3 COMMENTS
    • /
    • 1 LIKES
    • 채승호
      2002.01.18 19:13
      통상 insert가 select에 비해 무척 느린 이유 중 하나로 인덱스의 존재를 들 수 있는 데, 상황에 따라 다...
    • 권희수
      2002.01.18 18:59
      한건 인서트 할때마다 커밋을 하면 당근 시간이 많이 걸림니다. 앞의 분이 지적하신부분도 속도저하를 ...
    • 이중철
      2002.01.18 12:25
      첫째로 기존의 데이타건수가 10만건 이상일때의 대량 데이타 입력은 해당 테이블의 인덱스키를 없애고 ...
    • 전기봉
    • 2002.01.18 07:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2002.01.18 07:18
      엑셀시트의 해당영역을 문자로 바꾸면 될거에요 VBSCRIPT는 다음과 같네요.     R...
    • 최영근
      2002.01.18 19:31
      혹시 MS internet explorer 안에 다른 프로그램을 실행하시는 것입니까 ? 아니면 새로운 웹 브라우저를 ...
    • 권동훈
      2002.01.18 20:43
      안녕하세요? 새로운 웹브라우저를 만들기에는 시간이 너무 부족해서 익스플로러안에 윈어플리케이션을 실...
    • 꿈의대화
      2002.01.18 08:46
      .
    • 권동훈
      2002.01.18 20:47
      안녕하세요? 꿈의대화님.. 닷넷... 저도 생각은 해봤었는데 그 분야에 워낙 아는게 없어서..^^ 여기는 ...
    • 최경습
    • 2002.01.18 06:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채승호
      2002.01.18 06:44
      Dbedit는 dataSet만 연결되면 자동으로 DB와 연결이 됩니다... 따라서 DataSet의 절대적인 영향을 받...
    • 강성호
    • 2002.01.18 06:06
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2002.01.18 06:44
      아래와 같은경우는 저도 여러번 있었어요.. 디버깅도 안되고 답답하실겁니다. 또한 이런버그는 잡기...
    • 이중철
      2002.01.18 06:47
      form1 := TForm1.Create(self); form1.showmodal; if modalresult = mrOK then    &nbs...
    • 채승호
      2002.01.18 06:35
      이렇게 고치시고요...한번 해보시고요... try     form1 := TForm1.Create(self...
    • 이영주
    • 2002.01.18 05:12
    • 0 COMMENTS
    • /
    • 0 LIKES