TIL / 쿼리플랜이란

flobeeee·2022년 3월 2일
0

Today I Learned

목록 보기
22/35

정의

쿼리플랜이란 DB에서 쿼리를 날릴 때, 어떤 식으로 검색할 지 보여주는 것이다.

그 플랜대로 옵티마이저가 돈다.

옵티마이저 : sql 문장을 수행하기 위하여 가장 효과적인 방법을 선택하는 처리 과정.

예시

  1. pk로 걸려있는 데이터는 빠르게 돈다.
select * from user where id = 20;

  1. key (혹은 인덱스)가 걸려있지 않은 데이터는 풀스캔을 한다.
select * from user where name like '%은정%';

활용

  • 컬럼에 index가 제대로 걸렸는지 확인할 수 있다.
    (걸려있다면 1, 안걸려있으면 2다)

  • 74만개정도 데이터가 있는 테이블에서는 검색속도가 10초가량 차이가 났다.
    (key로 검색하는 게 0.002초, 다른 컬럼으로 검색하는 건 10초정도 걸렸다.)

  • 복잡한 서브쿼리를 사용할 때, 한번 씩 확인하는 습관을 가지면 좋다.

  • 검색api 응답이 오래걸리는 경우, 쿼리부분에서 제대로 key 검색을 하는지 확인해보자.

  • 자잘한팁) join걸때도 데이터양이 적은 테이블부터 시작하면 속도를 줄일 수 있다.

  • 위 화면은 mysqlWorkbench에서 확인할 수 있다. 아래 5번째에 있는 돋보기 버튼을 누르면 된다.


심화내용 : 벨로그/쿼리플랜

글 쓴후에 읽어봤는데 더 자세하고 전문적이다.

profile
기록하는 백엔드 개발자

0개의 댓글