안녕하세요 데이터 셀렉트를 할때 exists 를 쓰면 조회결과가 조금 빠르다는
얘길 들은적이 있는데요....
db data를 selecl를 할때 exists in 차이점이 궁금합니다.
--------------------------------------------------------------------------------------------------------------
db data를 select를 할때
in 구문절 대신 exists 를 쓰게 되면 인덱스를 태우기가 더 편한건가요???
데이터 조회결과가 너무 너무 느려서
데이터 양이 많을때 exists를 썼을때 얘기와 달리 속도향상효과가 거의 없었는데요....
(case when else end 사용에 의한 좌우 주요컬럼 검색 문제 같기도 하고....)
(단순히 엄청난 대용량 데이터끼리의 쪼인쪼인쪼인.... 문제같기도 하고...)
(물리적인 네트워크 라인이 조금 많이 뚝 동떨어졌던 DB문제 같기도 하고)
(인덱스사용에 있어 거의 최악의 경우가 있었는데요....)
(심지어 메모리에 올려도 보고, 다이나믹 쿼리까지 사용해봤습니다....)
(인덱스를 유심히 걸어도 보고)
참고얀넘인지 뭘해도 느리디 느리고 또 느리고... ... (조회결과가 수만개 빠졌다가 늘었다가 느렸다가 빨랐다가....
ㄴ( @_@)
exists 사용방법은 hint를 사용한다던지 하면 인덱스를 잘 태우기 위한 특별한 무슨 방법이 있는건가요????
in은 조건과 일치하는 값을 찾는 연산자이고 exists는 존재하는지 여부를 판단하는 연산자라 exists의 성능이 좋겠습니다.
다만 사용되는 인덱스가 unique에 not null일 경우에는 in과 exists가 동일한 내부 처리를 진행하지 않을까 생각됩니다.
물론 sql 버전마다 차이가 있을 수도 있겠고요.
그래서 exists를 사용했음에도 성능 향상이 없다면, 그 부분은 전체 쿼리를 보았을때 영향이 갈만한 부분이 아니라는 의미일 수 있습니다.
전체 쿼리에서 실행시간이 오래 걸리는 부분을 먼저 찾는다면 원인을 찾기에 한결 수월할 수 있습니다.