안녕하세요.


쿼리 튜닝하다가 이해 못할 현상을 발견하여 전문가님들의 의견을 구합니다.


50초가 걸리는 쿼리의 서브쿼리 SELECT 절에 top 1000000 넣었더니,

결과 데이터는 동일하였고 소요시간이 50초에서 2초로 줄었습니다.


대략 쿼리는 이렇게 생겼습니다. (빨간색추가한 부분입니다.)


SELECT *

FROM

(

  SELECT top 1000000 * FROM A WHERE A.x = 'XXX'

  UNION ALL

  SELECT  top 1000000 * FROM B WHERE B.y = 'YYY'

) p1

LEFT OUTER JOIN

(

  SELECT id,SUM(amount) amount

  FROM

  (

    SELECT top 1000000 * FROM A WHERE A.x = 'XXX'

    UNION ALL

    SELECT  top 1000000 * FROM B WHERE B.y = 'YYY'

  )

  GROUP BY id

) p2

ON p1.id = p2.id

, C

WHERE p1.id = C.ref_id

AND NOT EXISTS (

  SELECT 1 FROM E WHERE p1.id = E.ref_id AND p2.amount = E.amount

)



제가 이상하게 생각하는 점은,


top 1000000 없이 아래 처럼 실행한 경우.


1)    SELECT * FROM A WHERE A.x = 'XXX';

2)    SELECT * FROM B WHERE B.y = 'YYY';


결과 데이터가 1) 은 대략 1000개, 2)는 대략 100 개 밖에 안되었고,

결국 top 1000000 은 결과 데이터에는 아무런 영향도 미치지 않았다는 것입니다.

(사실 A, B 테이블 모두 레코드가 1000000 개가 되지 않습니다.)


혹시 캐시가 남았나 싶어서 조건도 약간씩 바꿔보고 top 1000000 구문도 넣었다 뺐다 해봤는데 결과는 마찬가지였습니다.

어떻게 이럴 수 있죠?


예상실행계획을 봐도 top 절이 추가된 것을 제외하고는 동일한 구조를 하고 있었습니다.


저는 ms sql 2008 을 사용하고 있습니다.


의견 부탁드려요 ㅠ

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 13216
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 8166
8098 인덱스 사이즈 관련 문의드립니다. [3] JKMoon 2014.08.06 2559
8097 아 조인 업데이트 될듯 말듯 절 괴롭히네여 ㅋ [4] 무념 2014.08.06 2874
8096 조회관련 쿼리 질문을 드립니다. 후니아기 2014.08.06 1830
8095 루트를 기준으로 모든 자식을 포함한 SUM 을 구하는 쿼리 질문드립니다. [1] 오늘밤은안돼요 2014.08.06 2193
8094 case문.. [1] 마힐링 2014.08.06 2267
8093 인덱스 관련 질문 드립니다. [3] JKMoon 2014.08.06 2358
8092 case 문 질문드립니다.. [3] 아수라발발타 2014.08.06 2439
8091 카탈로그 온라인상태로 변경 문의 김정권 2014.08.06 2654
8090 쿼리 질문 드립니다. [3] 전념 2014.08.05 2172
8089 사용중인 테이블 공간 확인 중.... SQL어렵.. 2014.08.05 2072
8088 DB접근제어 관련하여 문의드립니다. [1] 김삐씨 2014.08.05 2324
8087 쿼리 질문 드립니다 [2] 아수라발발타 2014.08.04 2083
8086 SQL Page관련 문의 드립니다. [2] SQL어렵.. 2014.08.04 2241
8085 Bulk insert , Union all , Order by 도와주세요. [2] Runningman、 2014.08.04 2960
» TOP 구문에 의한 말도 안되는(?) 성능개선 현상 문의 [7] ㅎㅌㅎㅌ 2014.08.01 3377
8083 테이블의 최종 변경 날짜 확인에 대해 문의 드립니다! [3] 가지마세요 2014.08.01 6010
8082 조인 관련 질문입니다. (같은 테이블 2번 조인) 강효종 2014.07.31 2227
8081 Full-Backup 파일과 MDF 파일과의 용량차이.. [1] 조진석 2014.07.31 2219
8080 누적합하다가 안되요 ㅠㅠ [3] 곰요 2014.07.31 2463
8079 DB백업질문입니다. [1] 희망나라 2014.07.31 1994





XE Login