8강 UNION을 이용해서 조건 분기 하지마라
•
원래 그렇게 만들어진 것이 아니다.
→ 내부적으로 여러 SELECT를 이용하기 때문에 성능에 문제가 생길 수 있다.
•
최대한 CASE를 이용해서 작성하라.
→ SELECT와 CASE를 이용해서 조건 분기를 충분히 할 수 있다.
•
절차적으로 IF 문을 작성해야할 때 어떻게 해야할까? SQL에서 CASE로 어떻게 나눌 수 있을까? 를 동치로 생각해서 작성하도록 노력해라.
9강 집계와 조건 분기
•
절차지향적으로 UNION을 통해서 집계를 할 수 있지만, CASE로도 집계가 가능하다.
WHERE구, HAVING구로 조건분기하면 초보
10강 그래도 UNION이 필요한 경우
UNION이 필요할 수 밖에 없는 경우
•
merge의 대상이 되는 테이블이 서로 다른 경우
•
풀스캔보다 인덱스를 통해서 효과적으로 SELECT UNION을 할 수 있는 경우
→ OR문을 통해서 실행계획을 SELECT 한번으로 바꿀 수 있으나 풀스캔인 경우 vs SELECT UNION을 통해서 인덱스를 활용할 수 있는 경우
→ 아마도 이 경우에는 해당 테이블에 row가 매우 많은 경우에 해당할 것 같음.
OR, IN, CASE등을 이용해서도 한번의 풀 스캔으로 사용할 수 있지만, UNION의 인덱스 조회 x n번과 고려하여 결정하여야하는 문제다.
11강 절차 지향형과 선언형
너 왜 시비걸어..?
아무튼 구문 위주의 절차적인 것보다 식(아마도 표현식)을 이용하여 선언형으로 작성하도록 노력하렴.