LEFT OUTER JOIN 이후. 0 3 4,801

by 한번사는인생 [SQLServer] [2024.04.08 15:13:19]


아래와 같은 코드가 있을때.

단순하게 조건 없이 WHERE B.ID IS NOT NULL 하면 속도가 느리지 않은데.

아래 WHERE 조건1 ~조건4 여러개 붙으니깐 속도가 느리더라구요.

어떤 부분이 문제가 되는 걸까요?ㅠㅠ

SELECT *
FROM A
     LEFT OUTER JOIN B
     ON A.조건 = B.조건
WHERE (
    조건1.
)
AND (
    조건2.
)
AND (
    조건3.
)
AND (
    조건4.
)
AND (
    (@매개변수 IS NULL)
    OR (B.ID IS NOT NULL)
)

 

by 아발란체 [2024.04.09 09:50:23]

붙는 조건들이 인덱스를 타지 않거나 선별력이 좋지 않을 것 같은데, 조건 하나씩 붙이며 급 느려지는 것이 있다면 해당 조건부터 체크를 해보셔야 할 거 같습니다. 실행계획 검색하여 어디서 비용이 높게 나오는 것인지 보는 것을 추천드립니다.
https://m.blog.naver.com/seek316/222306507699


by 한번사는인생 [2024.04.09 09:56:32]

left outer join 보다는

그 이외의 조건이 문제라는 것인가요?

사실 조건들이 아래처럼 생겼고, @매개변수가 대부분 NULL로 들어오고 있습니다.

AND (
     (@매개변수 IS NULL)
     OR (컬럼 = @매개변수)
)

 


by 아발란체 [2024.04.09 15:23:33]

주어진 단서만으로 성능 저하 문제 찾는 거 쉽지 않아 보입니다. 좀 번거롭고 힘드시겠지만 댓글 링크 보시고 플랜을 떠보세요. 조금 보시게 되면 신세계가 펼쳐집니다!!!! 아님 플랜 떠서 공유해주시면 이쪽 고수분들이 휙휙 나타나 답변을 해주실 겁니다.  

아니면 해당 SQL 풀과, 해당 테이블 스크립트(DDL)를 보내주시면 정확하게 문제 잡아드리겠습니다. jubhak@gmail.com 메일 주세용

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입