INDEX 활용하기

veluga·2021년 1월 11일
0

INDEX 삽질 활용하기

우리여기 회사에는 5천만건이 넘어가는 아주 뚱뚱한 테이블이 하나 있다.
나는 애기개발자라 애써 모른척 하고 있었지만 선임들이 퇴사하고 나니
내가 들여다 봐야할 상황이 되었다.

일단 오늘 20년에 해당하는 row가 몇개인지 조회할 일이 있었는데
노답의 조회시간

index 생성하기

조회조건에 필요한 컬럼 두개를 이용하여 인덱스를 생성해준다

create index entering_컬럼1_컬럼2_index
    on entering (컬럼1 ,컬럼2);

index 사용전 쿼리

select count(id) from entering
where 컬럼1 between '2020-01-01 00:00' AND '2021-01-01 00:00'
and 컬럼2 between '2020-01-01 00:00' AND '2021-01-01 00:00';
  • count(id) 가 빠를 것 같은 생각이 들지만 실제로는 count(*)가 빠르다
  • between , < , > 와 같은 비교는 인덱스를 타지 않으므로 수정해야한다

실행계획

조회시간

index 사용

select count(*) from entering
use index (entering_컬럼1_컬럼2_index)
where DATE_FORMAT(컬럼1, '%Y') = '2020'
and DATE_FORMAT(컬럼2, '%Y') ='2020'

실행계획

조회시간

이론 참고 https://jojoldu.tistory.com/243

profile
애개 (애기개발자)

0개의 댓글