주제

효율적인 SQL 코드 작성하는 법

 

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

  • 테이블을 최대한 작게 만들어놓은 후 JOIN하기
  • 조건을 추가해서 만약 100개의 열을 가져오기보다는 10개의 열만 가져올 수 있게 제한을 걸기
  • @@profiling -> 쿼리 실행 속도를 알려준다. 1이면 켜진 것(MySQL은 워크벤치를 사용하면 자동으로 실행 속도를 보여줌)
SET @@profiling = 1;

 

 

2. *, % 사용 지양하기

  • LIMIT을 걸고 조회하기
  • 파티션이 있는 테이블인지 확인하고, 파티션을 필터 조건으로 걸고 조회하기
SELECT clk_index, user_name, product_id
FROM clicks
WHERE date = '20231104'
LIMIT 10;
  • 칼럼 수가 많은 테이블을 조회할 때 "SELECT * "지양하기 -> 특히나 처음 보는 테이블일 때
    • 조회 결과가 엄청나게 많을 수 있게 때문
  • LIKE 사용 시 % 제한적으로 사용하기
    • %은 문자열의 개수가 무한적이기 때문에 연산 속도에 영향을 줌
    • _ 를 사용하여 제한적인 규칙을 주는 것이 좋음

 

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

  • 비교 연산자를 쓸 때 타입 확인하기
    • 묵시적 형변환이 일어나면 연산결과에 영향을 줌
  • WHERE절에서 왼쪽 칼럼에 함수 적용 지양하기
    • WHERE절에서 칼럼에 함수를 적용하면 인덱스를 사용할 수 없다
    • 인덱스는 읽기 속도를 증가시켜주기 때문

 

4. JOIN시 유의할 점

  • JOIN하는 테이블 간의 관계를 고려하기(1대1, 1대n, n대n)
  • 데이터 중복이 있는지 확인하기
  • 여러가지 쿼리 방식을 고려하여 연산속도가 빠른 것을 사용하기

 

5. 가독성 높이기

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

+ Recent posts