카테고리 없음

Mysql EXPLAIN 확인하기

림쌍월 2020. 12. 15. 16:49

* mysql EXPLAIN 이란 ?

 : 해당 쿼리를 실행하여 데이터를 조회하게 될때 진행되는 계획서를 확인하는 것과 비슷 합니다.

   어떤 키를 사용하며 index는 어떻게 조회가 되며 등등등 ..

 

 

* EXPLAIN  (Mysql)  , EXPLAIN PLAN SET (Oracle)

 :  이게 왜 자꾸 반대로 생각이 날까 몰라?

 

사용법은 위 그림과 같이 EXPLAIN 다음에 SELECT 명령문을 두면,

MySQL은 쿼리 실행 플랜 (query execution plan) 정보를 옵티마이저 (optimizer)에서 가져 와서 출력 한다.

 

즉, MySQL은 테이블들이 어떤 순서로 조인 (join) 하는지에 대한 정보를 포함해서,

SELECT를 처리하는 방법에 대해서 알려 준다.

 

위의 사진은 explain 결과 값인데 첫번째 라인에 key가 없어서 기본으로 조회되는 row가 26만건

거래처의 DB를 시노님 받아서 쓰는거라 쿼리도 준데로만 쓰는거라 버벅거리길래 봤더니 ..

어~ 이가 없네!~ KEY 도 않잡아 놓고 쓴다.

 

쿼리는 문제가 될것 같아서 올리지 못하고 그냥 "내가 만든 AI가 쿼리 써도 저거보다는 잘하겠다." 정도?

쿼리는 3개 테이블을 조인해서  값을 가져오는데 ......  어우 말을 말아야지 ..

 

아무튼 첫번째 로우의 row 필드 부분을 보면 index가 않되니까 전체 데이터를 모조리다~ 가져오는 상황

조치는 아주 간단하다. 도도록이면 테이블간의 조인은 KEY를 이용하기에 자동으로 잡히겠지만 그게 아니라면 index를 잡아서 진행하면 된다.

 

index 잡을때는 단일 컬럼으로 진행을 하든 복수 컬럼으로 진행을 하든 현재 가장 많이 조회하는 것으로 진행하는 것이 좋다.  빠른 조회 및 확인을 위한 index 설정이 잘못되면 오히러 성능 저하 및 많은 리소스를 소모하게 된다.