주제
효율적인 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절을 사용할 때, 각 블록 이름을 잘 지정해야 한다
- 쿼리가 복잡해지면 중간중간 주석을 작성해라