본문 바로가기
개발/DB

select이 느리면 인덱스를 추가해보자

by 설이주인 2023. 10. 6.

사용자 개인의 다운로드 조회를 진행하면서 조회 쿼리가 약 27s가 걸리는 것을 확인했다.

insert의 행위도 아닌데 select을 진행하면서 27초가 걸리는 상황이 너무 당황스러웠는데...

 

 

엄청 복잡한 쿼리도 아닌 상황이다.

join 테이블이 세개인 상황으로 이상하게 시간이 많이 걸리는 상황이었다..

 

1. 컨텐츠

2. 컨텐츠 코드

3. 다운로드 로그

 

세 테이블을 조인하고 각 컨텐츠의 제일 최신 날짜를 조회해보는 쿼리가 27초라니... 우선 확인을 해보자

 

처음에는 max date를 검색하는 상황에서 오래 걸리는 건가? 했는데 쿼리를 변경하고도 18초가 소요되는 상황이 발생했다...

 

그럼 현재 검색 속도를 조금 더 빠르게 하기 위해서 고려할 부분은 두가지 정도 생각해냈다.

1.  해당 로그의 사용자 최신 날짜 추출을 위한 테이블을 따로 분리 할지?

2. 인덱스를 추가 해서 검색 속도를 개선할지?

 

통계 계산까지 생각하면 1번이 맞고.. 통계를 위해 batch진행을 생각하고 있었지만...,

상황으로 2번 인덱스를 추가하는 것으로 진행했다.

 

우선 현재 테이블 인덱스를 확인하자

//현재 Table의 index 확인
SHOW INDEXES FROM [테이블];

조건식에 들어갈 아이를 index로 추가로 지정하자

//인덱스 추가
ALTER TABLE [테이블]
    ADD INDEX [인덱스명] (지정할 컬럼);
ALTER TABLE [테이블]
    ADD INDEX [인덱스명] (지정할 컬럼);

이제 초기에 진행했던 검색을 다시 진행해보자

 

이정도면.... 괜찮을지도...? ㅜㅜ!