안녕하세요..
늘 어려움이 생기면 이곳에 글을 남기게 되네요..ㅠㅠ
이번에는 with(nolock) 때문에요...
기존에 쿼리가 있는데요.. 어려운쿼리는 아니고 간단한 selelct , insert, update 입니다.
그런데 이 3가지 쿼리가 빈번하게 발생하네요.. 하나의 테이블에서요..
A 라는 테이블이라고 하면
우선 A 테이블의 해당일자의 데이터를 다지우고 전일자의 내용을 계산에서 인서를 하고 다시 각 조건에 맞게
A테이블의 내역을 업데이트 합니다.
이게 시작이구요..
다른테이블을 조회해와서 A테이블의 내용이 있으면 for 문을 돌면서
업데이트 없으면 인서트 하는데.
이런 구문이 4개가 있고.
마지막에는 A테이블에 입력된 해당일자의 수량을 +,- 를 거쳐 조회된 내역을
다시 for 문을 돌면서 업데이트 하게 됩니다.
그런데 A테이블을 조회 하는 곳에서 중간 중간 with(nolock) 이 걸려 있구요.
조회 하는 전체쿼리에 걸려 있지는 않습니다.
(예로 selelct 구문이 5개 있다고 하면 3개는 걸려 있고 2개는 없습니다.)
인서트나 업데이트 구문에는 걸려 있지 않구요..
제가 이런 질문을 하게 된 이유는
select 하는 쿼리에 제가 case 문을 하나 추가 했습니다.
위에서 말한 다른 테이블 내용을 조회 할때 필요해서요..
그런데 다른 쿼리는 그대로 인데 실행을 하면.. 보통 한달정도 일자를 주고 돌려도 15분이면 끝나던 쿼리가
1시간이 넘게 걸리네요.. case 문을 추가 한거 말고는 없는데요.. ㅠㅠ
case 문 추가 하였다고 해서 이렇게 오래 걸리지는 않을것 같구요..
with(nolcok) 이게 문제 인가해서요..
궁금하네요..
수고하세요~!
|