DataSet.RecordCount 라는 메쏘드를 사용하면 Qeury한 data를 처음부터
끝까지 fetch 하면서 count 한다고 하는군요..
그러니 당연히 속도가 저하되고, 만약 10,000건이 Query 되었다면
for ..loop 를 10,000 한다는 것인데, 이건 좀 무식해보이거든요.
그래서 Count(*) 을 다시한번 하는데, 이것도 맘에 들지 않습니다.
이외에 좋은방법(비용이 들지 않는) 있으시면 답변 부탁드립니다.
참고로 DB 는 Oracle8.0 입니다.
안녕하세요..조복기입니다..
고수님들이 답변을 해들릴것 같았는데 답변이 없는것같아서
초보가 몇자 남깁니다..
아마도 산마루님께서 정확히 알고계셔서 그런게 아닌가 생각이 드네요..
말씀하신대로 RecordCount, First, Last등은
결과값이 나오기위해선 그 안에서 첨부터 끝까지 뒤지는(?) 작업을 하죠..
이런작업은 거의 클라이언트쪽에서 발생을 한다는군요..
오라클같은 좋은 RDB를 사용하신다면
당연히 RDB에서 지원하는 함수를 사용하셔서
원하는 결과값을 얻으셔야 할겁니다..
RDB는 성능이 엄청 좋은데도 불구하고
개발되는 프로그램들의 대부분은 거의 클라이언트쪽에서 연산을 많이
하고 그러거든요..서버를 놀린다고 보면 될련지..
다른대안은 없구요 RDB쪽 함수를 적극 활용하는 방법밖에는 없는것 같습니다..
그 전에 테이블의 최적화작업은 필수가 되겠지요..
단지 데이타건수의 크기로인해서 속도문제를 야기시키는건 아닌것 같아요..
주변엔 몇만건의 데이타도 파라독스를 이용해서
잘 사용하는 사례가 많거든요..
좋은하루되세요..
산마루 께서 말씀하시기를...
> DataSet.RecordCount 라는 메쏘드를 사용하면 Qeury한 data를 처음부터
> 끝까지 fetch 하면서 count 한다고 하는군요..
> 그러니 당연히 속도가 저하되고, 만약 10,000건이 Query 되었다면
> for ..loop 를 10,000 한다는 것인데, 이건 좀 무식해보이거든요.
> 그래서 Count(*) 을 다시한번 하는데, 이것도 맘에 들지 않습니다.
>
> 이외에 좋은방법(비용이 들지 않는) 있으시면 답변 부탁드립니다.
> 참고로 DB 는 Oracle8.0 입니다.