안녕하세요

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

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 23442
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12418
7260 쿼리 질문드려요. [4] 오리지널 2013.10.18 3531
7259 현재 접속중인 특정 사용자 접속 차단 [1] 한인 2013.10.18 7942
7258 여러 필드를 정렬하기 질문입니다. [2] jjmin 2013.10.18 4721
7257 쿼리좀 봐주세요 [3] 홍훈아 2013.10.18 3492
7256 오라클에서 MSSQL로 업데이트 하는 방법에 대해서... [1] 아네사 2013.10.17 3895
7255 대용량 행 오버플로우 관련... [1] Jade 2013.10.17 11733
7254 복합키 클러스터드 인덱스 성능에 대한 문의. [1] 태기 2013.10.17 4831
7253 한개의 테이블의 다중 필드에 대한 조회 쿼리 [4] 한인 2013.10.17 5083
7252 기초적 Query 질문 [7] 최문규_310881 2013.10.17 3696
7251 as 컬럼명 별칭 사용 문의요 [2] 오리지널 2013.10.17 5134
7250 서브쿼리 정렬방법 [8] 냥냥 2013.10.17 6288
7249 필드명에 [ ] 표시는..? [5] ppoway 2013.10.16 4664
7248 쿼리 관리 고수님도 조언 부탁합니다. [3] 설까치 2013.10.16 3576
7247 대기 관련 질문 드려요. [1] 디비러 2013.10.16 4713
7246 쿼리 질문... [2] 초심 2013.10.16 3772
7245 가장 높은 필드 값 가져오는 쿼리 질문 좀 드립니다. [2] 열린문서 2013.10.16 10463
7244 열을 하나의 행으로.. 질문좀요ㅠㅠ [1] javamanyo 2013.10.15 6543
7243 로그인 / 유저 관련 질문 입니다. [3] 디비러 2013.10.15 12736
7242 합계 쿼리문의 드립니다. [1] seyo 2013.10.15 3413
» 간단한 업데이트 쿼리인데 조건에 따라 속도차이가 너무 심해요 [8] 로지남푠 2013.10.15 8666





XE Login