Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

ASP에서 SQL문을 실행할 때 옵션 설정

ASP에서 Insert, Update, Delete등 반환값이 없는 SQL문을 실행할 때 보통

con.Execute sql

위와같이 사용한다. sql에 실행할 SQL문을 스트링으로 저장하고 커넥션을 이용해서 실행한다. 하지만 이 뒤에 옵션을 붙힐 수 있는데 옵션을 붙힐 경우 성능을 향상 시킬 수 있다.

con.Execute sql, , adCmdText + adExecuteNoRecords

예를 들어 위와같이 사용하면 실행 성능을 더 향상 시킬 수 있다. 뒤에 붙는 인자는 CommandTypeEnum과 ExecuteOptionEnum에 대한 값이다.

CommandTypeEnum은 sql문의 타입을 명시적으로 밝혀 주는 것이다.

adCmdUnspecified : 명령 타입을 지정하지 않는다.(사용X)
adCmdText : SQL쿼리 등 텍스트 문자열
adCmdTable : 테이블 이름
adCmdStoredProc : 스토어드 프로시저
adCmdUnknown : (기본값) CommanText를 알수 없는 값으로 지정(부하 많음)
adCmdFile : 저장된 레코드셋의 파일 이름
adCmdTable Direct : 테이블 이름


ExecuteOptionEnum : 명령의 실행 방식이다.

adAsyncExecute : 비동기식으로 실행
adAsyncFetch : 앞의 행을 가져온 이후에 비동기식으로 실행
adAsyncFetchNonBlocking : adAsyncFetch와 비슷하지만 레코드들을 가져오는 작업으로 인해 명령이 방해되지 않음
adExecuteNoRecords : 레코드를 리턴하지 않는다.
adOptionUnspecified : 명령이 명시되지 않음


그래서

con.Execute sql, , adCmdText + adExecuteNoRecords

위의 문은 sql문이 텍스트 문자열이고 레코드를 반환하지 않는 다는 것을 명시하고 있으며 이렇게 사용함으로써 퍼포먼스를 늘릴 수 있다.

추가적으로 위의 명령을 보면 콤마(,)가 2개 사용된것을 볼 수 있는데 LngRecs라는 명령어가 사용되지 않아서 그렇다.

con.Execute sql, LngRecs, adCmdText

이 명령어를 사용하면 LngRecs라는 변수에 쿼리문으로 실행된 갯수가 넘어온다. Update문으로 5개행이 변환되었다면(쿼리분석기에서 "5개분 실행됨"처럼...) LngRecs에 5라는 숫자가 들어오게 된다
2007/11/11 21:33 2007/11/11 21:33