안녕하세요. 초보델맨입니다.
델파이 4.0을 사용하고 있습니다. 운영체제는 윈98이구요.
Select문을 사용하여 DB에서 자료를 가져와 StringGrid에 값을
출력시켜주고 있습니다.
통계프로그램인데요.
많게는 4~5분걸리구요. 빠르면 1~2분 소요됩니다.
Query 문장은 대충 이런식입니다.
---[예시]---
Select a.tel_no, a.home, a.addr, ......... , b.price, b.books
from member a, store b
where a.seq = b.seq
and a.data_1 = b.date_1
and a.com = b.company_no
.........
group by a.seq, a.home
order by a.seq
----------
RecordCount를 체크하여 각 항목의 값을 StringGrid의 셀에 콤마표시나
StrToInt 또는 IntToStr등 컨버트하거나, 100으로 나누어서 셀에 집어넣기도
하고 금액같은 항목은 천단위로 콤마를 찍어주기도 합니다.
그리고 한 Query문장이 끝나면 다른 Query 문장을 날리고 있습니다.
처리버튼을 클릭했을 때 통계프로그램이라서 대충 6 ~ 8번의 각기 다른 Select
문장을 씁니다.
그런데 왜 시간이 이렇게 많이 걸리는 걸까요?
퍼포먼스가 너무 떨어져 미치겠어요.
바보처럼 모니터에 결과 나오기를 빼꼼히 보고 있자면 제 자신이 한심합니다.
이 문제를 해결해 보고 싶습니다.
고수님들의 도움 부탁 드립니다.
> 안녕하세요. 초보델맨입니다.
>
> 델파이 4.0을 사용하고 있습니다. 운영체제는 윈98이구요.
>
> Select문을 사용하여 DB에서 자료를 가져와 StringGrid에 값을
>
> 출력시켜주고 있습니다.
>
> 통계프로그램인데요.
>
> 많게는 4~5분걸리구요. 빠르면 1~2분 소요됩니다.
>
> Query 문장은 대충 이런식입니다.
>
> ---[예시]---
>
> Select a.tel_no, a.home, a.addr, ......... , b.price, b.books
> from member a, store b
> where a.seq = b.seq
> and a.data_1 = b.date_1
> and a.com = b.company_no
> .........
> group by a.seq, a.home
> order by a.seq
>
> ----------
>
> RecordCount를 체크하여 각 항목의 값을 StringGrid의 셀에 콤마표시나
>
> StrToInt 또는 IntToStr등 컨버트하거나, 100으로 나누어서 셀에 집어넣기도
>
> 하고 금액같은 항목은 천단위로 콤마를 찍어주기도 합니다.
>
> 그리고 한 Query문장이 끝나면 다른 Query 문장을 날리고 있습니다.
>
> 처리버튼을 클릭했을 때 통계프로그램이라서 대충 6 ~ 8번의 각기 다른 Select
>
> 문장을 씁니다.
>
> 그런데 왜 시간이 이렇게 많이 걸리는 걸까요?
>
> 퍼포먼스가 너무 떨어져 미치겠어요.
>
> 바보처럼 모니터에 결과 나오기를 빼꼼히 보고 있자면 제 자신이 한심합니다.
>
> 이 문제를 해결해 보고 싶습니다.
>
> 고수님들의 도움 부탁 드립니다.
----------------------------------------------------------------------------
안녕하세요?
EasySoft.hihome.com 강호규입니다.
아마도 이런 문제일 겁니다.
테이블 2개를 조인해서 쿼리를 할 경우
조인조건은 최소한 간단명료해야 합니다.
그래서 DB설계시에 프리이머리키는
가장 간략하게 설계되어야 합니다.
테이블을 조인하는 경우에
여러개의 필드가 사용된다면
그만큼 조회시 많은 시간이 소요됩니다.
위의 쿼리문에서 보면 아래 부분이 되겠죠!
where a.seq = b.seq
and a.data_1 = b.date_1
and a.com = b.company_no
그래서 DB를 튜닝하는 절차를 거치게 됩니다.
코딩시에 작성한 쿼리문장에 DB내부에서
얼마나 효율성을 가지고 동작하는지를 조사하여
다시 코딩에 다시 피드백되어
효율적인 코드를 작성하게 됩니다.
실제 오라클DB의 경우
쿼리튜닝만 거치더라도
몇분 걸리는 작업이 단 1초에 끝날 수 도 있습니다.
실제 업무에서 이러한 경우를 많이 격었거든요.
이 부분은 상당한 매력을 가지고 있습니다.
오라클DB가 재미있는 것도 이부분 때문이거든요.
위의 경우도 이런 케이스라 단정지을 수는 없습니다.
그러므로
위의 코드를 델파이에서가 아니라
쿼리만 해볼 수 있는 데스크탑이나 SQL Exploer에서
쿼리를 해보고
1.쿼리에서 많은 시간이 소요된다면
우선 쿼리문장의 튜닝을 우선 해야 할 것이고요, 이 것으로 해결이 부족하다면
테이블 설계를 재검토해야 할 것입니다.
2.쿼리 자체에서는 많은 시간이 소요되지 않는다면
델파이에서의 코딩부분을 좀더 효율적으로 재작성 해야 되겠죠!
해결하시길...