ms-sql7.0에서 데이터를 가져올려구 하는데요...
쿼리를 던져서 가져오는데 시간이 조금 걸립니다.
그런데 가져오는 동안은 프로그램이 어떠한 동작도 하지 않습니다.
한마디로 가져오는 동안은 프로그램이 죽어버립니다.
전부 가져오면 다시 동작을 합니다... 뭐 버튼 클릭 같은거요...
이런 경우에는 어떻게 코딩을 해야 하는지요?
어떤분은 thread를 사용하시라고 하는데.. thread를 사용한다면 구체적으로 어떻게 사용해야 하는 것인지요?
제가 알기로는 thread는 여러작업을 작게 나누어서 작업을 하는 걸루 알고 있는데(맞는지 모르지만..) 이런경우에는 단지 쿼리만 던져서 데이터를 가져오는 것인데..... 이런경우에도 thread를 사용하는 겁니까?
그럼 많은 조언 부탁드립니다.
감사합니다.
총 검색시간은 더 늦을 경우가 많겠죠
-------------------------------------------------------
쿼리문에서...
Order By, Group By(이놈은 쓸때 써야죠 ^^)을 쓰지 않는다.
이유 : Database에서 쿼리문을 Decode해서 쿼리한 결과값을 TEMP에 저장
하여 소트한다.
^^ 그 TEMP에 다 저장할때 까지 못기다리는 분 ㅋㅋ 바로 나..
-------------------------------------------------------
Ado 보면 커서모드 선택하는것이 있는데 그것을 서버로 한다.
(또 다른 옵션을 선택하여야 하는데 전 Dbexpress를 써서 잘 모르겠네요)
하여간 이 경우 Recordcount가 나오지 않습니다.
open해서 Recordcount가 0보다 크다면 이미 데이타를 레코드셋에
Assign했다는 이야기 입니다.
다른말로 쿼리해서 데이타를 다 가져와서 레코드셋에 다 Input했다는 이야기
이기도 하지요
--------------------------------------------------------
위와같이 할 경우 어떤 제약이 있을까요..
DBGRID 그런것들은 쓰지못할 것이다(될수있으면 쓰지 마세요
코드만 난잡해져요)
전 한번도 쓰지 않았기에 쓸 수 있는지 조차 모릅니다.
SORT는 직접해야 한다.
그럼 어떤 이득이 있을까요
백만건을 검색하나 10건을 검색하나 첫번째 데이타가
검색되는 시간은 0.1초도 안걸린다.
DataSet.open;
DataSet.First;
While not DataSet.eof do
begin
.....
(100건 또는 1000건에 한번씩 Application.ProgressEvent 등을 돌리시고 ^^)
DataSet.next;
end;
DataSet.Close;
켁켁 이상입니다.
그리고 사실 전 Order By는 해 줍니다. 나중에 소트하기 귀찮아서..
그러나 부하직원에게는 Order by는 주지 말라고 이야기 합니다.
참 쿼리 던질때도 파라메터 쓰지 마시기를 그냥 SqlText또는
CommandText에 그냥 쿼리 넣으세요
Parameter를 쓰면 Dataset이 Parsing하면서 Validcheck를 하기에
그 Overhead도 꽤 됩니다.
그 내용은 이쪽에서도 상당히 올라온 것으로 알고 있습니다.