Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[44] [팁] TADOQuery 사용시 주의...
박진수 [jeensoo] 14053 읽음    2003-11-14 12:56
[팁] TADOQuery 사용시 주의...

TADOQuery 사용시 이상하리 만치 bde 쪽과 비교시 느려지신 분들 있으실거로 생각 됩니다.
본인도 얼마전서부터 BDE를 버리고  ADO를 사용중 느꼈던 고민 거리였는데..,

어제 우연찮게  한 713줄의 SELECT 쿼리구분을 TADOQuery를 통해 동작 시킨적이 있었습니다.
물론 그전에도 간혹 왜이렇게 느리지라는 의문이 있었으나 어제(11월13일)처럼 느려본적이 없었거든요

그런데 결과가 리턴되기 까지 무려 22초간이 흘러 버리는 겁니다.
(환경 조건에 대한 자세한 내용은 제가 올려놓은 Q&A 계시판을 참고해 주시구요)

또 동일한 sql구문을 TQuery로 동작시킬때는 대략 1~2~3초 걸렸는데..,

그런데 그 원인은

바로 TADOQuery.SQL.Add 메소드에 그 원인이 있었습니다..

혹시나 하는 의구심이 들어서  Open 메소드를 사용하기 직전에
showmessage('오픈실행');을 두고 컴파일후 실행한 결과

shoemessage 창이 나올때 까지 무려 22초가 흘러버리더군요..

또 TAdoQuery를 TQuery로 대체한 결과 (동일 메소드 수행) 약 1~2초

그래서 쿼리부분의에 사용했던  SQL.Add 메소드를 제거하구

각각의 문자열 끝에는 cr값을 더해서 1개의 문자열로 만든후에

SQL.Text에 넣고 Open을 실행하니 거의 1초 안에 읽어 오더군요..

아무래도 잘은 모르겠으나, TAdoQuery 의 SQL.Add()  메소드가 문제가 있는 것

같습니다.  TQuery 의 SQL.Add()  메소드와  처리속도 차이가 너무 나니..

물론 TAdoQuery의 SQL.Append() 도 무척 느리기는 마찬가지 입니다..

TADOQuery사용시  SQL.Add() 메소드의 사용은 피하는것이 좋을둣 합니다.

대신 SQL.Text 프로퍼티에 직접  sql 스트링을 넣는것이 좋을듯 하네요.

일단 TADOQuery.SQL.Add() 메소드가 왜 이렇게 느린지는 저도 원인을 찾고 있는 중 입니다.

일단 ADO의 QUERY 콤포넌트 사용하시는 분들은

SQL.ADD 메소드 TQuery 때 이미 익숙해 졌거나
또는 SQL.ADD 메소드가 자동으로 개행문자를 넣어주어 많이들 사용하는데요
TADOQuery 의 SQL.Add 메소드는 사용을 피해주심이 좋을 듯 하내요   


+ -

관련 글 리스트
44 [팁] TADOQuery 사용시 주의... 박진수 14053 2003/11/14
(링크)     C++Builder Tip'N Tricks > [팁] TADOQuery 사용시 주의...
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.