데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요. join에 대해 궁금해서 적습니다.
쿼리를 짤때 join은 inner , left, right 3개의 조인을 많이 사용합니다.
기존에 inner로 짠쿼리들이 속도가 너무 나오지 않아 튜닝하고자 합니다.
몇년전에 hash join으로 글씨 바꿨을때 조회가 되었던거 같은데.
지금은 변경해서 해보니 잘 되지가 않네요.
혹시 hash join 쿼리 사용방법 아시는분 적어주시면 감사하겠습니다.
좋은 점심 되세요.
INNER JOIN, OUTER JOIN은 논리 연산자이고
HASH, MERGE, NL등은 물리 연산자입니다.
무슨말인고 하니
쿼리를 만들때는 출력할 데이터의 속성에 따라 INNER나 OUTER를 선택해서 만들게 되고
이게 실행되는 시점에 SQL 엔진이 HASH로 JOIN을 할지 MERGE나 NL로 조인을 할지를 결정하는 것이죠.
강제로 HASH조인으로 실행되게도 할 수는 있는데 힌트를 주는것이 그 방법입니다.
방법은
INNER HASH JOIN
INNER MERGE JOIN
INNER LOOP JOIN 이렇게 실제로 수행될 물리 연산자를 지정하는 것입니다.
HASH 조인으로 강제 수행해서 속도가 빨라질 수도 있겠지만
그 전에 적절한 인덱스 튜닝이 이루어져야 할것 같습니다.