파티션이 있는 테이블인지 확인하고, 파티션을 필터 조건으로 걸고 조회해라 (일, 시간 단위 등)
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) 대학생 - 동아리
데이터 중복이 있는지 확인하기
상황에 따라 가장 효율적인 쿼리의 형식을 고려하자
일부 데이터를 샘플링하여 여러 방법에 대해 실험적으로 성능(실행 시간) 평가 가능
가독성 높이기
다른 사람들도 쿼리를 쉽게 이해 가능해야 하며, 본인이 쿼리를 봤을때도 쉽게 이해할 수 있어야 한다