안녕하세요

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

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 SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 42994
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 22751
7243 로그인 / 유저 관련 질문 입니다. [3] 디비러 2013.10.15 12815
7242 합계 쿼리문의 드립니다. [1] seyo 2013.10.15 3428
» 간단한 업데이트 쿼리인데 조건에 따라 속도차이가 너무 심해요 [8] 로지남푠 2013.10.15 8740
7240 Collation이 틀린 linked server db 셀렉트 [1] 세상4는법 2013.10.15 4299
7239 MSsql 이용한 주식데이터분석 [2] jkjk 2013.10.14 7256
7238 합계 조회 문의 [3] 몽키디루피 2013.10.12 4011
7237 순환 질의 ㅜ.ㅜ.. [3] nowaday_ 2013.10.11 3672
7236 몬스터 길들이기같은 대용량 모바일 게임 DB로 어떤 DB가 적당할까요? [4] zza 2013.10.11 7965
7235 마지막 값만 가져올라면... [3] SQL왕왕초보 2013.10.11 9395
7234 MSSQL 서비스팩 문의 [4] 빌리 2013.10.10 4573
7233 쿼리 하나 문의 드릴께요. [3] 수노 2013.10.10 3947
7232 select 후 insert 시 특정필드값만 변경..... [2] SQL왕왕초보 2013.10.08 8467
7231 빈데이터를 convert할때 오류가 납니다. [2] 왕만두와우동 2013.10.08 3864
7230 프로시저에 인풋 파라메타 관련 질문 드립니다. [1] 디비러 2013.10.08 4052
7229 오라클과 SQL2012 연동 [6] 뽀글이해먹자 2013.10.08 15207
7228 스칼라서브쿼리 값들끼리는 연산안되는건가요? [7] 황금용이 2013.10.08 4600
7227 간단한 질문 하나만.. 올릴게요 SQL 데이터 -> 엑셀 파일로 저장 [3] pertime 2013.10.08 4534
7226 ssis 상품 마스터 이관 관련 질문 입니다. [3] 어둠별빛 2013.10.07 4181
7225 행렬계산하는법좀 알려주세요!! [7] 쉽다고생각해 2013.10.07 5395
7224 대기 상태 모니터링 중에 SQLTRACE_BUFFER_FLUSH 질문 합니다. [6] 디비러 2013.10.07 6417





XE Login