mysql 쿼리문 어떤게 효율이 더 좋을까요? IN, JOIN 채택완료
회원의 아이디 리스트를 구해서 해당 아이디에 대한 데이터를 가져오는 쿼리인데요
mb_id에는 모두 인덱스가 걸려있습니다.
조건이 되는 회원의 아이디 리스트를 여러곳에서 사용해야 하는 경우입니다.
</p>
<p>select mb_id from member where level > 2 group by mb_id // ['aa','bb',cc','dd'];</p>
<p>
IN절을 이용했을때
</p>
<p>select * from member_request where mb_id in ('aa','bb','cc','dd')</p>
<p>select * from member_answer where mb_id in ('aa','bb','cc','dd')</p>
<p>select * from member_choice where mb_id in ('aa','bb','cc','dd')</p>
<p>
join을 이용했을때
</p>
<p>select * from member_request as a</p>
<p>inner join (</p>
<p> select mb_id from member where level > 2 group by mb_id</p>
<p>) as b</p>
<p>on a.mb_id = b.mb_id</p>
<p> </p>
<p>select * from member_answer as a</p>
<p>inner join (</p>
<p> select mb_id from member where level > 2 group by mb_id</p>
<p>) as b</p>
<p>on a.mb_id = b.mb_id</p>
<p> </p>
<p>select * from member_choice as a</p>
<p>inner join (</p>
<p> select mb_id from member where level > 2 group by mb_id</p>
<p>) as b</p>
<p>on a.mb_id = b.mb_id</p>
<p>
어떤쿼리가 더 효율적일까요??
댓글을 작성하려면 로그인이 필요합니다.
답변 3개
채택된 답변
+20 포인트
답변에 대한 댓글 2개
J
JKWang
3년 전
�
3년 전
저도 부족한 실력이지만..ㅠㅠ
몇십몇백만건이 아니면 그렇게 체감이 나는 부분은 아니더라구여..
몇십몇백만건 데이터에서 실제로 돌려보는게 어떤게 더 빠른지 알 수 있긴 한데
제 생각에는 테이블을 조회하는 횟수가 많을 수록 부하가 걸린다고 주워들어서 IN이 더 빠르지 않을까요?
몇십몇백만건이 아니면 그렇게 체감이 나는 부분은 아니더라구여..
몇십몇백만건 데이터에서 실제로 돌려보는게 어떤게 더 빠른지 알 수 있긴 한데
제 생각에는 테이블을 조회하는 횟수가 많을 수록 부하가 걸린다고 주워들어서 IN이 더 빠르지 않을까요?
댓글을 작성하려면 로그인이 필요합니다.
3년 전
member 에서 select 하는데 굳이 group by mb_id가 있는 이유를 모르겠네요.
select m.mb_id, a.*, b.*, c.* from member m
inner join member_request a on using(mb_id)
inner join member_answer b on using(mb_id)
inner join member_choice c on using(mb_id)
where level > 2
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
J
JKWang
3년 전
질문의 의도는 인덱스를 이용해서 검색할때 join이 나을지 in이 나을지 였습니다.
group by를 쓴건 음..질문에 사용된 예시가 이상했지만ㅎㅎ
여러개의 데이터중에서 group 으로 가져온다는 의미였습니다.
답변 달아주셔서 감사합니다~
group by를 쓴건 음..질문에 사용된 예시가 이상했지만ㅎㅎ
여러개의 데이터중에서 group 으로 가져온다는 의미였습니다.
답변 달아주셔서 감사합니다~
댓글을 작성하려면 로그인이 필요합니다.
3년 전
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
채택
답변대기
답변대기
답변대기
답변대기
채택
채택
답변대기
답변대기
답변대기
채택
데이터가 많을때 더 빠른 쿼리로 사용하고 싶은데 막막합니다ㅎㅎ