Q&A

  • Query속도 테스트때와 프로그램 실행시 차이가 심합니다.
참 이상합니다. 똑같이 사용했는데.
일단 프로그램 짜면서 쿼리, 데이터소스, 디비그리드 콤포 놓고, sql에
SELECT * FROM Ydbname WHERE fGCode = :ParaGCode Order By fSabun
넣고 파라미터에
코드를 입력하고 쿼리 active true하면 금방 자료가 나와요.
근데 프로그램내부에

    Query1.SQL.Clear;
    With Query1 do
    Begin
        Close;
        Sql.Add('SELECT * FROM Ydbname WHERE fGCode = :ParaGCode Order By fSabun');
        Params[0].Asstring := EditGCode.Text;
        Prepare;
        Open;
    End;

라고치면 보통 10분정도 걸립니다.
win2000 server에 mssql2000 사용하고 작업도 win2000에 델 5입니다.
레코드 갯수는 한 4만개정도구요.
어떻게 할까요.
2  COMMENTS
  • Profile
    열심히 2003.02.25 22:00
    입력받는 파라미터 값이 다르기 떄문이 아닐까요..

    디자인 타임시에 쿼리를 열때는 파라미터에 값을 안넣으시고

    오픈을 하셨을것 같은데요....

    그래서 아무 자료도 없으니 그냥 툭하고 열리는것이고..

    밑에는 파라미터를 넘겨서 이래저래 찾느라고 그러는것 같은데요..

    그래도 4만건에 10분이 걸린다면 조건을 더 넣으시고 테스트 하시기

    바랍니다..필요하면 인덱스도 만들어야 되겠지요..그럼..여기까지

  • Profile
    김호균 2003.02.26 00:00
    당연히 파라미터 똑같이 넣어줬죠.
    '파라미터에 코드를 입력하고' 라는 항목을 읽어 보시면..
    결과물로 나오는건 레코드 3개-30개정도

        Query1.SQL.Clear;
        With Query1 do
        Begin
            Close;
            Sql.Add('SELECT * FROM Ydbname WHERE fGCode = ''A050030201''');
            Prepare;
            Open;
        End;

    위와같이 data를 바로 입력해도 마찬가지 입니다.
    1.혹시 tdatabase콤포를 사용해서 그런가요 ?
    2.작업하는 네트워크 속도 때문에 ?
      (인터넷은 잘 되는데...)
    3.서버가 후져서 ?(상용으로 쓰는 서번데.)
    4.서버쪽에 접속자가 너무 많아서 ?
      (홈피에 많아야 몇천명, db는 나혼자  access)
    5.델파이 쿼리할때 db를 다 pc로 가져온 다음 쿼리를 해서 ?
      (odbc로 연결된건데 sql server ver.3.70입니다.)


    원인이라도 알면...
    아무튼 sql explorer나 직접 사용할때는 빨리나오는데 1,2초
    프로그램에선 15-20분,
    trace해보면 Open명령에서 멈추거든요.