CURSOR 내에서 WHERE CURRENT OF 를 이용하여 현재의 레코드를 업데이트하려고 하는데,
수초 내로 끝나야할 작업이 수십분 동안 디스크를 엄청 읽어대며 CPU load가 꽉 차는데, 왜 그런지를 모르겠습니다.
파워빌더와 Sybase 7입니다. 조언 부탁드리겠습니다.
아래는 파워빌더 내의 해당 스크립트입니다..
-----------------------------------------
........(생략)
DECLARE C1 CURSOR FOR
select column1, column2 from table_name where isnull(itm_ifflag,'') not in ('1','2') for update;
OPEN C1;
DO WHILE true
FETCH C1 into :ls_var1, :ls_var2;
IF sqlca.sqlcode = 100 THEN EXIT
ls_record = "&M"
li_write = FileWrite(li_FileNum, ls_record)
update table_name set itm_ifflag = '1' where CURRENT OF C1; // 이 줄만 막으면 문제없이 다른 작업들이 완료됩니다.
li_linecnt++
LOOP
CLOSE C1;
|