--문제의 쿼리 select * from A inner join B on A.id = B.id where A.dt between @begin and @end go -- 800건 select count(*) from A where A.dt between @begin and @end --20000000건 select count(*) from B A.id에 인덱스 있음 B.id 에 인덱스 있음. 선택도 조낸 좋음..중복되는 id가 2개 있을까 말까.. 근데..10초가 지나도..1분이 지나도 5분이 지나도 끝나지 않음.. 씨밸..먼가가 잘못되었다.. 각 데이터형을 살펴보니.. A.id varchar(12) B.id nvarchar(12)였다.. 오호라~ select * from A inner join B on convert(nvarchar(12), A.id) = B.id where A.dt between @begin and @end go ㅡㅡ;;; 그래도 결과가 안나온다.. 힌트며 온갖 지랄을 해도 결과는 똑같다.. 예상 실행계획은 잘 타는데 말이다... 그렇게 2시간 30분이 흘렀다.. cross apply를 적용해본다.. select * from A cross apply (select * from B where A.id = B.id) b where A.dt between @begin and @end go ㅜㅜ 안나온다...아무래도 index seek는 글렀나부다.. top 1을 줘보자.. select * from A cross apply (select top 1 * from B where A.id = B.id) b where A.dt between @begin and @end go 결국 원하는 시간에 나오게는 해결을 하였으나.. i/o가 좀 많다.. 졸라 찜찜허다.. 처음으로 시작하는 마음으로 다시 시작.. 헉스!!!! 븅신..븅신..븅신..븅신..븅신.. A.id nvarchar(12) B.id varchar(12)였다.. A테이블의 정보와 B테이블의 정보를 헤깔렸다!!! select * from A inner join B on convert(varchar(12), A.id) = B.id where A.dt between @begin and @endgo 닝기리..조또.. 주말에 퇴근도 못하고 이게 뭐여..