SQL 효율적으로 짜기

넘어산·2023년 12월 13일
0

TIL

목록 보기
12/37

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

  • 최대한 필터링을 해서 집합을 작게 유지한뒤 join하는 것이 좋다.
    - 필터링을 먼저 하자
  • 쿼리 파인딩
    • 실행 시간 측정
    • SELECT @@profiling
    • SET @@profiling = 1
    • 0이면 off, 1이면 on

2. *, % 사용 지양하기

  • 모르는 테이블을 알아볼 때는 데이터를 일부를 보면서 파악하기
    - Limit 걸고 조회하기
    - 파티션이 있는 테이블인지 확인하고, 파티션을 필터 조건으로 걸고 조회하기
    - 컬럼 수가 많은 테이블을 조회할 때 SELECT * 지양하기. 알고 싶은 것만.
    - LIKE 사용 시 % 제한적으로 사용하기. 규칙을 최대한 좁힌다.

3. 데이터 타입 잘 확인하기

  • 묵시적 형변환
    • 데이터베이스가 알아서 형변환해서 맞춤.
    • date > 20231031, 간편하지만 시간 소요, 디버깅 힘듦
  • 비교 연산자를 쓸 때 타입을 확인하기
  • WHERE 절에서 왼쪽 컬럼에 함수 적용 지양하기
    • WHERE 절에서 컬럼 쪽에 함수를 걸면, 인덱스를 사용할 수 없다. 상대적으로 작은 크기의 테이블에 함수 적용하기.
    • SELECT * FROM employees WHERE YEAR(join_date) = 2023;

4. join 시 유의할 점

  • 연산량이 크기 때문에 테이블 크기를 줄여놔야 함
  • join하는 테이블 간의 관계를 고려하기
    • 1:1, 1:N, N:N
  • 데이터 중복이 있는지 확인하기
  • 여러가지 쿼리 방식을 고려하자

5. 가독성 높이기

  • 서브쿼리보다는 WITH 문이 가독성이 좋다
  • WITH 절을 사용할 때, 각 블록 이름을 잘 지정하자
  • 쿼리가 복잡해지면 중간중간 주석을 작성하자

0개의 댓글