작성
·
197
0
아래와 같은쿼리문이 있을 때
select User.id,User.nick
, followes->follow.
~~
from users as User
left join
(
follow as followes->follow
inner join users as followes
on followes.id = followes->follow .followerid
)
on User.id = followes->follow .followerid
where User.id = 3
쿼리문 실행순서가
1. from
2. on
3. join
4.where
이순으로 알고있는데
여기서 from users as User 전체 User데이터 뽑고나서
어떤 순서로 실행이 되는지 궁금합니다.
제생각으로는 left join 이 실행이 되는데 그안 괄호먼저 실행이 되어서
follow as followes->follow
inner join users as followes
on followes.id = followes->follow .followerid
follow 테이블과 users 테이블의 id가 같은것을 뽑아서
left join 주체가 되는 user 테이블의 id와 같은것을 찾고
그후에 where user.id = 3 이 실행될꺼같은데
저 중간에 있는 on이 join문끝에있는 on이 아니라 다른것인가요?? 궁금합니다.
답변 1
0
쿼리문 앞에 explain 붙여보시면 순서가 나옵니다.
제 생각에는 User.id가 3인 로우 먼저 찾고, 그걸 left join으로 follow와 합쳐서 follow에서 user.id가 3인 것을 찾고, 마지막으로 follow.followerId들을 user와 inner join할 것 같은데요.