조회할 테이블 확인
->추출 조건(where)
->데이터 그룹화
->
그룹화 조건(having)
->데이터 추출
->데이터 순서 정렬
where과 having은 필터링을 한다는 점에서 비슷하지만 퍼포먼스적으로는 where 문이 더 좋다.
where 문은 from으로 전체 데이터(테이블)를 불러온 후, 바로 필터링을 하지만,
having 문은 from으로 전체 데이터를 불러오고 group by를 통해 전체 데이터를 그룹화한 후에, 필터링을 하기 때문에 더 비효율적이다.
where 문을 쓸 수 있는 상황이면 where 문을 쓰자!
다중 Join도, 일반 Join과 동일하다. 그저 JOIN-ON을 사용하는 횟수가 늘어난 것이다.
1. 여러 개의 JOIN-ON 사용
select * from 테이블이름X x
JOIN 테이블이름Y y ON x.col_name1 = y.col_name2
JOIN 테이블이름Z z ON y.col_name3 = z.col_name4;
2. ON 대신에 where 문으로 조건 설정
select *
from 테이블이름X x, 테이블이름Y y, 테이블이름Z z, ...
where x.col_name1 = y.col_name2
and y.col_name3 = z.col_name4;
Having 절은 Group By 또는 SELECT에 있는 colmuns만 사용할 수 있다. 따라서 x를 select에 추가해주거나 having 대신에 where 문을 사용해야 한다.
[참고]
https://bicloud.tistory.com/20
https://myjamong.tistory.com/172
다중 Join
따옴표/백틱 차이점
https://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks-in-mysql