재직중인 회사에서 옆 동료가 레거시를 수정하는 중에 도움을 요청하였다..
대략적인 문제는 특정 엔드포인트 호출시 내부 로직을 보니 같은 쿼리를 키값 만큼 루프를 돌며 쿼리를 호출하는데 해당 쿼리가 0.5초나 걸려 루프사이즈가 커질 수록 점점 느려지는 문제가 있는것을 확인했다 나를 포함한 옆 동료분들도 직접 작업을 한게 아니라서 왜 이렇게 만들었는지는 알수가 없다..
해당 문제를 해결하기 위해 data Grip 에 일단 쿼리를 실행해 보았다.
위 이미지는 문제로 보이는 쿼리를 실행계획으로 돌려본 결과값이다.
제일 상단에 나오는 부분이 문제가 있는 듯하다.
rows에 나오는게 가장 많은데다가
possible key에는 분명히 가능하지만 실제 key에는 인덱스가 타지 않는다.
타지 않는 인덱스를 보니 boolean 필드이다.
아래는 스택오버플로우
Is there any performance gain in indexing a boolean field?
I'm just about to write a query that includes a WHERE isok=1. As the name implies, isok is a boolean field (actually a TINYINT(1) UNSIGNED that is set to 0 or 1 as needed). Is there any performanc...
stackoverflow.com
설명하자면 boolean 필드에 값이 너무 많다면 인덱스를 사용하지 않는다고 한다..
항상 일을 하고 있지만 항상 배우게 된다..
'코드 > dev' 카테고리의 다른 글
form 요청 PATCH , PUT, DELETE는 불가능한 이유 (2) | 2024.02.26 |
---|---|
Swagger UI (2) | 2023.11.27 |
ec2 네트워크 연결 되지 않는 오류 (2) | 2023.11.22 |
jenkins slack webhook 에러 (2) | 2023.11.22 |
mariadb(mysql) 테이블 깨짐 복구 (Table 'product_images' is marked as crashed and should be repaired) (2) | 2023.11.22 |