[DevCourse] Day 14 - SQL 기초(4)

한상우·2023년 12월 7일

Data Science Devcourse

목록 보기
14/25

효율적인 SQL 쿼리 작성

  • 효율적인 쿼리를 작성하기 위해서는 (비용, 연산량, 수행시간, ...)를 고려해야 한다

  • 테이블을 집합으로 생각하기

  • row를 제한

    • 테이블을 조회할때는 항상 LIMIT을 걸고 조회해라 (얼마나 큰 테이블인지 모른다)
    • 파티션이 있는 테이블인지 확인하고, 파티션을 필터 조건으로 걸고 조회해라 (일, 시간 단위 등)
  • col을 제한

    • SELECT * 지양하기
    • LIKE 사용 시 "%" 사용은 제한적으로 실행 ("_" 사용이 더 안전하다)
  • 연산자를 사용할 때 타입을 잘 확인하기 -> SQL의 경우 자동으로 type casting을 하는데 완벽하지 않으며, 수행 시간이 증가할 수 있다

  • WHERE 절에서 왼쪽 col에 함수 적용 지양하기

  • JOIN 시 유의할 점

    • 최대한 필터링을 한 후에 JOIN을 하는 것이 안전하다
    • JOIN 할 테이블의 관계를 고려하기
      - 1:1 관계 : 왼쪽 테이블의 row 하나가 오른쪽 테이블의 row 하나에 대응
      ex) 대학생 - 학번
      - 1:n 관계 : 왼쪽 테이블의 row 하나가 오른쪽 테이블의 row 여러개에 대응
      ex) 고객 정보 - 상품 클릭
      - n:n 관계 : 왼쪽 테이블의 row 여러개가 오른쪽 테이블의 row 여러개에 대응
      ex) 대학생 - 동아리
    • 데이터 중복이 있는지 확인하기
    • 상황에 따라 가장 효율적인 쿼리의 형식을 고려하자
      • 일부 데이터를 샘플링하여 여러 방법에 대해 실험적으로 성능(실행 시간) 평가 가능

가독성 높이기

  • 다른 사람들도 쿼리를 쉽게 이해 가능해야 하며, 본인이 쿼리를 봤을때도 쉽게 이해할 수 있어야 한다
    • 서브쿼리 보다는 WITH 구문이 가독성이 좋다
    • WITH 절을 사용할 때 각 블록 이름을 잘 지정하자
    • 주석("--")을 적극적으로 작성하자
profile
개인 공부용 블로그입니다

0개의 댓글