mysql 쿼리문 어떤게 효율이 더 좋을까요? IN, JOIN
본문
회원의 아이디 리스트를 구해서 해당 아이디에 대한 데이터를 가져오는 쿼리인데요
mb_id에는 모두 인덱스가 걸려있습니다.
조건이 되는 회원의 아이디 리스트를 여러곳에서 사용해야 하는 경우입니다.
select mb_id from member where level > 2 group by mb_id // ['aa','bb',cc','dd'];
IN절을 이용했을때
select * from member_request where mb_id in ('aa','bb','cc','dd')
select * from member_answer where mb_id in ('aa','bb','cc','dd')
select * from member_choice where mb_id in ('aa','bb','cc','dd')
join을 이용했을때
select * from member_request as a
inner join (
select mb_id from member where level > 2 group by mb_id
) as b
on a.mb_id = b.mb_id
select * from member_answer as a
inner join (
select mb_id from member where level > 2 group by mb_id
) as b
on a.mb_id = b.mb_id
select * from member_choice as a
inner join (
select mb_id from member where level > 2 group by mb_id
) as b
on a.mb_id = b.mb_id
어떤쿼리가 더 효율적일까요??
!-->!-->!-->답변 3
select 를 한번더 하는것보다 IN을 쓰는게 좋지않을까요?
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
답변을 작성하시기 전에 로그인 해주세요.