-- ASP

RecordSet 커서타입에 따른 성능

어린왕자악꿍 2009. 4. 10. 09:55

rs.Open sql, db [,커서타입, Lock타입, 옵션]

* CursorLocation
adUseClient : 3
adUseNone : 1
adUseServer : 2

rs.CursorLocation = 3

첫번째는 SQL문이나 저장프로시저를 사용해도 됩니다.

두번째는 Connection객체를 씁니다.

세번째부터는 생략 가능합니다. 세번째는 커서타입(ADO상수)입니다.
   0 <adOpenForwardOnly>: 레코드를 앞으로 이동시키면서 순차적으로 한번만 읽음
   1 <adOpenKeyset> : 레코드를 자유로이이동-레코드갱신-다른사용자가추가한내용열람불가
   2 <adOpenDynamic> : 레코드를 자유로이이동-레코드갱신-다른사용자가 작업한 모든내용 열람가능
   3 <adOpenStatic> : 레코드를 자유로이이동-레코드갱신불가-단지 데이타를 가져오는데 유용

네번째는 Lock타입입니다.
   adLockReadOnly : 레코드는 읽을수만 있읍니다.
   adLockPessimistic : 각 레코드는 한번밖에 갱신안됩니다.
   adLockOptimistic : 각 레코드는 한번이상 갱신가능하나 Update메서드를 실행하면 갱신안됩니다.
   adLockBatchOptimistic : 갱신모드로 들어가면 작업가능 

다섯번쨰는 옵션입니다.
   adCmdText : 첫번째가 SQL문을 실행함을 지정
   adCmdStoredProc : 첫번째가 저장프로시저를 사용함을 지정
   adCmdTable : 첫번째가 테이블을 가져오는것임을 지정

기본이 adUseServer 이기 때문에 adOpenDynamic , adOpenKeyset 등을 쓸 경우 1건식 프로파일러에
exec sp_cursorfetch 180150377,32,1,1 이런식으로 찍히는 것을 발견할 수 있다.
이걸 날려주려면 cursor location 을 client 로 바꾸어 주어야 합니다.

출처가 생각 안나네요 ㅎ