데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요 데이터 셀렉트를 할때 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를 사용했음에도 성능 향상이 없다면, 그 부분은 전체 쿼리를 보았을때 영향이 갈만한 부분이 아니라는 의미일 수 있습니다.
전체 쿼리에서 실행시간이 오래 걸리는 부분을 먼저 찾는다면 원인을 찾기에 한결 수월할 수 있습니다.