본문 바로가기

프로그래밍/Delphi

TADOQuery가 현저히 느려질 경우

TADOQuery를 사용하여 동적 쿼리를 수행하도록 할 경우에 데이터가 증가함에 따라 현저하게 느려지는 경우가 발생할 수 있다.
속도 향상법
  ADOQuery.lockType = ltReadOnly;
  ADOQuery.cursorType := ctOpenForwardOnly;

위와 같이 해줄 경우에 ADOQuery에서 양방향 조작을 하지 않는다면 최상의 속도를 얻을 수 있을 것이다
또한 FROM절에 조인되는 테이블 마다 (NOLOCK)을 걸어주면 속도가 향상 된다.

날짜 조건이 들어간 경우에
WHERE  regDate = '2010-03-01'

이런식으로 지정 할 경우에 데이터가 많아지면 느려지는 현상이 나타남 따라서 시간을 제외한 날짜를 지정하려고 하면
다음과 같이 구간을 지정해 주는 것이 속도가 훨씬 개선된다.

WHERE regDate >= '2010-03-01 00:00:00' and regDate <= '2010-03-01 23:59:59'

위 조건 처리 때문에 기존에 잘 돌던 어플에서 쿼리가 타임아웃이 나는 것을 여러번 격었다.