|
adoquery의 help파일에는 빠른 속도를 제공한다고 쓰여있는 것 같은데요...
실제로 사용을 해보니 adoquery를 이용해 mdb에서 자료를 가져오면 속도가 많이 느린 것 같습니다.
테이블 네 개정도에서 for반복문을 두 개정도 돌려 자료를 꺼내오는데요.... 소스는 이러합니다..
int sys_num = Form1->StringGrid1->Row+1;
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("select a일련번호 from a테이블 where 일련번호 = " + IntToStr(sys_num));
ADOQuery2->Open();
a_count = ADOQuery2->RecordCount;
for(int i =0;i<a_count;i++)
{
int a_sys_num = ADOQuery2->FieldByName("a일련번호")->AsInteger;
ADOQuery3->SQL->Clear();
ADOQuery3->SQL->Add("select c일련번호, c from c테이블 where a일련번호 = " + IntToStr(a_sys_num));
ADOQuery3->Open();
int a_m_count = ADOQuery3->RecordCount;
for(int j=0;j<a_m_count;j++)
{
int c_sys_num = ADOQuery3->FieldByName("c일련번호")->AsInteger;
if(means_show == true)
RichEdit1->Lines->Add(ADOQuery3->FieldByName("c")->AsString);
ADOQuery4->SQL->Clear();
ADOQuery4->SQL->Add("select d from d테이블 where c일련번호 = " + IntToStr(c_sys_num));
ADOQuery4->Open();
int ex_count = ADOQuery4->RecordCount;
for(int k=0;k<ex_count;k++)
{
RichEdit1->Lines->Add(ADOQuery4->FieldByName("d")->AsString);
ADOQuery4->Next();
}
ADOQuery4->Close();
ADOQuery3->Next();
}
ADOQuery3->Close();
ADOQuery2->Next();
}
ADOQuery2->Close();
이런 식으로 서로 다른 테이블에서 반복하여 where로 비교해가면서 필드를 가져와 뿌려주는 식인데요...
각각의 쿼리 결과 row가 많을 때(각각 10개씩만 되도) 속도가 굉장히 느려서 richedit1에 다 뿌려는데 걸리는 시간이 7~8초가 넘게 걸리더라구요....이게 정상적인 속도인지..아니면 더 빠르게 뿌려줄 수 있는 방법이 있는지 알고 싶습니다.
db고수님들의 답변 부탁드리겠습니다
|