본문 바로가기

공부/DB

개인적인 쿼리 튜닝 기초 정리(mysql)

실행 계획으로 배우는 고성능 데이터베이스 튜닝을 보고 느낀 점을 정리.

해당 책은 oracle을 기초로 하지만 mysql도 크게 다르지 않을 듯 하다.

공부한 내용을 주기적으로 갱신한다.

 

1. 실행 계획 분석 방법에 대해 알아야 한다. 

mysql 실행 계획 : 12bme.tistory.com/160

 

[MySQL] MySQL 실행 계획

DBMS의 쿼리 실행에 같은 결과를 만들어 내는 데 한가지 방법만 있는 것은 아닙니다. 아주 많은 방법이 있지만 그중에서 어떤 방법이 최적이고 최소의 비용이 소모될지 결정해야 합니다. DBMS에서�

12bme.tistory.com

2. 조회 시 인덱스를 잘 활용하자 

업무 특성 상 인덱스의 첫 번째 컬럼을 사용하지 않는 경우가 있다. 이런 경우에 인덱스를 사용하지 않으므로 where 절에 첫 번째 컬럼을 서브쿼리로 조회하여 넣어주는 방식으로 인덱스를 태울 수 있다.

order by, group by 등에서 사용되는 컬럼도 충분히 인덱스가 될 수 있다. 

 

3. join 순서 정의

조회하고자 하는 데이터의 갯수가 가장 적은 테이블을 기준으로 한다.

기준 테이블의 데이터가 적을수록 조회 속도는 빨라진다. 여러 개의 테이블을 조인한다 하더라도 마찬가지이다. 

 

4. 힌트를 잘 사용하자.

힌트를 이용해 조인 방법, 순서 등을 제어 할 수 있다.

데이터의 수가 적다면 중첩 루프 조인이 좋고 방대하면 해시 조인이 좋다.

해시 조인은 mysql 8.0 부터 지원한다.

 

5. 인라인 뷰는 join으로 대체 될 수 있다.

인라인 뷰도 최적화 시키면 join 절로 대체 될 수 있다. 

대체 할 수 없는 쿼리는 인라인 뷰 내부를 최적화 하자.

 

 

'공부 > DB' 카테고리의 다른 글

AWS mysql 5.7 -> 8.0 업그레이드  (0) 2020.10.13