안녕하세요

간단한 업데이트 쿼리 속도 문제로 오전내내 씨름하다 결국 도움을 요청하러 왔네요

MSSQL 2008 R2 Express 버전이구요 쿼리는 아래와 같습니다

 

쿼리.1

update CA set CA.checkmember = CB.MemberNum
From CTI_WaveRecord_State CA
 Inner Join
 (
 Select a.sno, b.MemberNum
 From (
  Select sno, callnum
  From CTI_WaveRecord_State
  Where wavfilepath = '20130902' and callpath <> 'Callback' and checkmember is null
  ) A
  Inner Join
  (
  Select MemberNum, Name, Replace(HP,'-','') HP From TBG_Client
  ) B ON A.callnum = B.HP
 ) CB ON CA.sno = CB.sno

 

쿼리.2
update CA set CA.checkmember = CB.MemberNum
From CTI_WaveRecord_State CA
 Inner Join
 (
 Select a.sno, b.MemberNum
 From (
  Select sno, callnum
  From CTI_WaveRecord_State
  Where wavfilepath = '20131014' and callpath <> 'Callback' and checkmember is null
  ) A
  Inner Join
  (
  Select MemberNum, Name, Replace(HP,'-','') HP From TBG_Client
  ) B ON A.callnum = B.HP
 ) CB ON CA.sno = CB.sno

 

보셔서 아시겠지만 간단한 업데이트 쿼리이구요 둘다 똑같은 쿼리에 음영으로 표시해놓은 조건만 다릅니다 

대상 건수는 약 700-800건 정도구요

희안하게 쿼리.1은 1초 내외로 업데이트 처리가 완료됩니다

그런데 쿼리.2번은 빨라야 5분이고 방금 전에는 7분이 넘게 걸리더군요..

왜이렇게 차이가 날까요..

update대신 select로 조회해보면 둘다 1~2초 이내로 조회가 됩니다

업데이트시에만 속도가 너무 느려지네요

두 쿼리의 실제실행계획을 파일로 저장했는데 첨부할께요

확장자 제한때문에 압축했습니다

두 쿼리의 실행계획이 좀 다른데요

첨부파일 내용 보시면 TBG_Client 테이블 스캔 실제 행 수가  쿼리1은 12만 행인 반면 쿼리2는 9천만 행에 가깝네요..

이 때문인거 같은데 동일한 쿼리가 왜 이렇게 차이가 나는건지 모르겠습니다

 

그리고 현재 사용중인 DB가 SQL2000에서 백업한 데이터를 복원한 상태입니다

호환성은 SQL2000으로 설정했구요

2000버전 쓸때는 조회시간이 얼마 안걸리던 쿼리들이 2008로 옮긴 후로는 빨라진 쿼리도 있는 반면 현저히 느려진 쿼리도 있네요

그래서 해당 쿼리를 확인해서 사용된 테이블에 인덱스를 추가해주면 속도가 빨라지네요..

2000에서는 인덱스 없이도 빠르던 쿼리들이 2008로 옮기고 나서는 왜이렇게 느려지는건지..

혹시 이 현상에 대한 특별한 원인이 있을까요

 

답변에 필요한 충분한 정보가 되었는지 모르겠습니다만 조언 좀 부탁드릴께요

감사합니다

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 2128
7249 필드명에 [ ] 표시는..? [5] ppoway 2013.10.16 4413
7248 쿼리 관리 고수님도 조언 부탁합니다. [3] 설까치 2013.10.16 3570
7247 대기 관련 질문 드려요. [1] 디비러 2013.10.16 4706
7246 쿼리 질문... [2] 초심 2013.10.16 3762
7245 가장 높은 필드 값 가져오는 쿼리 질문 좀 드립니다. [2] 열린문서 2013.10.16 10455
7244 열을 하나의 행으로.. 질문좀요ㅠㅠ [1] javamanyo 2013.10.15 6535
7243 로그인 / 유저 관련 질문 입니다. [3] 디비러 2013.10.15 12399
7242 합계 쿼리문의 드립니다. [1] seyo 2013.10.15 3403
» 간단한 업데이트 쿼리인데 조건에 따라 속도차이가 너무 심해요 [8] 로지남푠 2013.10.15 8113
7240 Collation이 틀린 linked server db 셀렉트 [1] 세상4는법 2013.10.15 4266
7239 MSsql 이용한 주식데이터분석 [2] jkjk 2013.10.14 7215
7238 합계 조회 문의 [3] 몽키디루피 2013.10.12 3984
7237 순환 질의 ㅜ.ㅜ.. [3] nowaday_ 2013.10.11 3636
7236 몬스터 길들이기같은 대용량 모바일 게임 DB로 어떤 DB가 적당할까요? [4] zza 2013.10.11 7913
7235 마지막 값만 가져올라면... [3] SQL왕왕초보 2013.10.11 9353
7234 MSSQL 서비스팩 문의 [4] 빌리 2013.10.10 4539
7233 쿼리 하나 문의 드릴께요. [3] 수노 2013.10.10 3907
7232 select 후 insert 시 특정필드값만 변경..... [2] SQL왕왕초보 2013.10.08 8287
7231 빈데이터를 convert할때 오류가 납니다. [2] 왕만두와우동 2013.10.08 3827
7230 프로시저에 인풋 파라메타 관련 질문 드립니다. [1] 디비러 2013.10.08 4016





XE Login