Development/MySql

[MySQL] update 시 timeout 에러 발생할 때

곽진돔 2022. 1. 17. 15:24

기존쿼리

select count(*) from Obj.table where date_format(date,'%Y%m%d') between 20201001 and 20210930 and reference in (0,1) and sd_limit = 1;

수정쿼리

select count(*) from Obj.table  WHERE date between '2020-10-01' AND '2021-09-30'  and reference in (0,1) and sd_limit = 1;

date 칼럼은 datetime으로 지정되어있으니 컬럼명 between 'YYYY-mm-dd' and 'YYYY-mm-dd'로 조회하는게 속도에 더 좋다고 하여서 수정하였다.
 
추가로 reference값은 조회해보니 1인 값은 없어서 reference = 0으로 조건을 주고 다시했다. in으로 조회하면서 없는 값을 찾아서 일어난 오류도 있었을까?..
 
여튼 계속된 오류가 뜨다가 어케된건지 update자체는 잘 끝난 것 같다. 값이 변경되어있네...

 

결론

데이터 수가 많아서 발생하는 문제..
update도 데이터 조회 후 수정되는 것이므로
 
1. 쿼리 튜닝
2. 타임아웃 시간 늘리기
 
등의 다양한 방법을 시도해보기..
 
 


2022.06.29 추가

쿼리를 다시보니 where 조건문을 수정해줄 필요가 있을 것 같다.
 
성능향상을 위한 방법에 대해 고려해봐야할 것 같다는 생각이 든다. 관련 포스팅을 조만간 정리할 것 !