쿼리튜닝과 인덱스
약 한달 전 조회 조건을 추가해달라는 요청이 왔고 대수롭지 않게 추가했던 적이 있다. LEFT JOIN tb_review re ON re.care_no = ca.care_no AND re.delete_yn = 'N' AND re.reg_type = '0' 이게 전체 조회량을 늘리고 늘려서 화면을 다운시킨다는 것을 알게 되었는데, 일반적으로는 join에 and조건을 걸으면 이런 현상이 일어난다고 한다. 그래서 사수님은 이걸 1차적으로 분리해서 작성했고, 시간이 12초에서 1초 내로 줄어드는 효과를 보았다. LEFT JOIN tb_review re ON re.care_no = ca.care_no WHERE 1=1 AND re.delete_yn = 'N' AND re.reg_type = '0' 아니 근데 이건 다시 확인하니까 조회 대상이 바뀌는 변화인 것. 전과 같은 결과를 위해 다시 쿼리를 돌려야 했고 EXPLAIN 명령어로 해당 쿼리를 조사해보자 review 테이블에서 care_no를 인덱싱 없이 ALL로 조회하고 있음이 나왔다. 여기에 인덱스를 추가해줘서 결국 같은 결과를 1/10 이하의 시간으로 조회가 가능케 했는데 이에 너무 신기해서 인덱스에 대해 살짝 정리해볼까 한다.