[SQL] 쿼리 튜닝 기본수칙
1. 쿼리에서 처리가 쉬운 부분과 소스에서 처리가 쉬운 부분을 파악하라
- 쿼리로 처리 가능한 부분은 되도록 쿼리로 처리하되, 소스코드에서 처리가 더 유리한 부분이 있다면 소스에서 한다.
- 대체로는 소스보다 쿼리에서 바로 처리하는 것이 빠르다.
- 하지만 쿼리에 모든 걸 떠맡기면 DB 서버에 부하가 커진다.
- (클라우드 서비스의 경우) 서버는 증식이 가능하므로, 어느정도는 소스에서 처리하는 것도 좋다.
2. 서브쿼리보단 조인을 통해 해결하라
- 조인을 통해 값을 추출해내는 것이 인덱스를 타기 쉬워, 성능에 유리하다.
- 하지만 단일요소에 대해서는 서브쿼리가 단순하고 빠를 수 있다.
3. 문자열 비교에 like를 과용하지 말라
- like는 문자열 패턴을 사용하므로 =보다 연산속도가 훨씬 느리다. 꼭 필요한 경우가 아니면 사용하지 말자.
4. 불필요한 함수 호출을 자제하라
5. 최대한 인덱스를 타도록 쿼리를 구성하라
- 그게 빠르다.
6. 인덱스 컬럼이 너무 많아도 안좋다.
- 인덱스가 너무 많아도 부하가 걸린다.
7. 외래키(FK) 기능은 사용하지 말라
- FK는 완벽한 정합성을 강요하는 다소 이론적이고 이상적인 기능이다.
- 매번 키 무결성 체크를 하므로 부하가 꽤 크게 걸린다.
- 게다가 실제 비즈니스 로직과는 잘 맞지 않는다. 딱 떨어지지 않는 부분이 매우 많다.
- 그래서 버그를 양산하기도 좋다.
계속 추가하고 정리할 것
2020-07-27 작성