LabHub

SQL 실전 · 조인 · 퀴즈

퀴즈: 조인

LabHub 에서 이어서 보기

문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. LEFT JOIN 뒤 WHERE 절에 오른쪽 테이블의 조건을 쓰면 어떻게 되는가?

    1. 짝이 없어 NULL 이 채워진 행이 조건에서 걸러져 사실상 INNER JOIN 이 된다
    2. ON 절에 쓴 것과 결과가 달라지지 않는다
    3. 문법 오류로 실행되지 않는다
    4. 조건과 무관하게 오른쪽 테이블의 모든 행이 남는다
  2. LEFT JOIN 결과에서 주문이 없는 고객의 건수를 0 으로 만들려면?

    1. count(*) 를 쓴다
    2. count(o.id) 처럼 조인된 쪽의 컬럼을 센다
    3. COALESCE(count(*), 0) 을 쓴다
    4. HAVING count(*) > 0 을 붙인다
  3. 주문 하나에 상세가 3건일 때 주문과 상세를 조인한 뒤 sum(o.total_amount) 를 하면?

    1. 주문 금액이 3배로 부풀려진다
    2. 정확한 주문 금액 합계가 나온다
    3. 상세 금액의 합이 나온다
    4. 오류가 발생한다
  4. 짝이 없는 행만 찾는 안티 조인을 쓸 때 NOT IN 보다 NOT EXISTS 가 안전한 이유는?

    1. 서브쿼리 결과에 NULL 이 섞이면 NOT IN 은 결과를 통째로 비우기 때문
    2. NOT EXISTS 가 항상 더 빠르기 때문
    3. NOT IN 은 인덱스를 쓸 수 없기 때문
    4. NOT EXISTS 만 상관 서브쿼리를 지원하기 때문
  5. 같은 테이블을 자기 자신과 조인해 쌍을 만들 때 a.id < b.id 조건을 넣는 이유는?

    1. 비교 횟수를 줄여 성능을 높이려고
    2. id 가 NULL 인 행을 제외하려고
    3. 같은 쌍이 순서만 바뀐 채 두 번 나오는 것과 자기 자신과의 쌍을 막기 위해
    4. 결과 쌍의 정렬 순서를 보장하려고
  6. 조인 조건을 빠뜨리면 어떤 일이 생기는가?

    1. 문법 오류가 발생해 아예 실행되지 않는다
    2. 첫 번째 테이블의 행만 반환된다
    3. 모든 조합이 만들어지는 카티션 곱이 되어 행 수가 곱으로 폭증한다
    4. 자동으로 기본 키끼리 연결된다
  7. 실행 계획에서 Nested Loop 의 안쪽 노드가 loops=52310 으로 나왔다. 가장 먼저 확인할 것은?

    1. 안쪽 노드의 1회 실행 시간이 짧으니 문제없다고 판단한다
    2. 인덱스를 모두 지운다
    3. 바깥쪽 행 수 추정이 맞는지 확인한다. loops 를 곱한 총 시간이 병목일 수 있다
    4. 조인 순서를 무조건 뒤집는다