에러 내용
select * from <TABLE> where <COL_NAME>=<VALUE> order by <COL_NAME>;
mysql query가 너무 오래 걸리고 느립니다.
이런 query를 사용하는 front 나 back에도 성능 면에서 안 좋은 영향이 나타납니다.
에러 원인
1. 너무 많은 row
: 현재 테이블에 약 400만 개의 row가 있습니다.
2. 비효율적인 query
: ordery by나 where과 같은 추가적인 리소스 소모를 일으키는 query가 있습니다.
해결 방법
세 가지 정도의 해결 방법을 생각할 수 있습니다.
- index를 사용합니다.
- limit을 사용합니다.
- order by 나 where를 다른 방식으로 구현합니다.
ALTER TABLE `<TALBE>` ADD INDEX `<NEW_INDEX_NAME>` (`<COL_NAME>`);
저는 order by에 해당하는 column을 index로 설정하고 limit을 사용하며, order by와 where을 쿼리로 받아온 제한된 개수의 row만을 대상으로 back에서 직접 구현하여 쿼리 응답 시간과 서버 응답 시간을 3초가량에서 0초가량으로 줄였습니다.
자세한 내용은 private github page에 있습니다.
참고 자료
'개발 > 에러해결' 카테고리의 다른 글
Error: spawn <file> ENOENT (2) | 2023.03.13 |
---|---|
react 여러 setState가 서로 기다려서 멈춤(react state batch update) : setTimeout으로 각각 비동기 업데이트 (0) | 2023.03.10 |
react setInterval에서 state 업데이트 안됨 (0) | 2023.02.17 |
은(는) 위험할 수 있으므로 다운로드 하지 않습니다. 오류 해결 (0) | 2023.02.13 |
setheader 안됨 : fetch 후 reponse에 header가 없을 때 (0) | 2023.02.13 |
댓글