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하는 테이블 간의 관계를 고려하기
- 데이터 중복이 있는지 확인하기
- 여러가지 쿼리 방식을 고려하자
5. 가독성 높이기
- 서브쿼리보다는 WITH 문이 가독성이 좋다
- WITH 절을 사용할 때, 각 블록 이름을 잘 지정하자
- 쿼리가 복잡해지면 중간중간 주석을 작성하자