슬로우쿼리 해결방법이 있을까요? 채택완료
1. 일일 댓글 합계를 체크해서 포인트를 지급하는데
아래와 같은 슬로우쿼리가 발생하고있습니다.
select SUM(po_point) as point FROM `g5_point` WHERE mb_id ='xxxxxx' and po_rel_action='댓글' and TO_DAYS(po_datetime) = TO_DAYS('2018-11-12 00:19:18')
2. 출석체크 부분때문인진 몰라도 출석자가 몰리면 아래와 같은 슬로우쿼리가 발생하고있습니다.
select * from g5_member where mb_id = TRIM('xxxxx')
2가지 해결방법이 있을까요? 도움좀 부탁드립니다ㅣ. ㅠ.ㅠ
답변 3개
1. 지우게 되면 포인트 내역에 문제가 있을수 있겠지만
혹여 연도별로 커스텀을 한다면 좀 나아지지 싶습니다.
그리고 키는 다른곳에서 별도로 where절 줄수 있으니 확인하시고 멀티로 잡으시던지 해야할것 같습니다.
2. 회원수가 얼마나 되길래 그러는지 의문이 생깁니다.
혹시 해당 mb_id 조회하는 쿼리가 아닌 다른 부분에서 슬로우쿼리가 발생하는게 아닐까요
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
과부하가 걸릴만한 컬럼은
and TO_DAYS(po_datetime) = TO_DAYS('2018-11-12 00:19:18')
여기 같네요
po_datetime 이 문제인데
일별 포인트를 체크하는것이라면
po_datetime을 기록하는 시점에
date를 별도로 기록하게 만드는것도 방법입니다.
별도로 만든 컬럼의 이전데이타는 밀어 넣는 형태로 update문 하나면 해결될것이구요
date에 index를 걸고
비교날짜를 문자형으로 단일 비교하면
속도는 급증할듯 싶네요
댓글을 작성하려면 로그인이 필요합니다.
1. 전체 레코드수가 얼마나 될까요?
po_rel_action 컬럼과 po_datetime 컬럼에 인덱스를 추가해보세요
2. mb_id는 키가 잡혀있을텐데.. 이 역시 회원수가 얼마나 되나요?
답변에 대한 댓글 1개
1. po_datetime, po_rel_action 이 2개를 묶어서 인덱스 줘야되나요?ㅠ
데이터는 100만개정도 되는데. 맘값아선 비워버리고싶은데 이걸 비워버리면 회원 포인트가 다꼬이는거 아닌지요..ㅠㅠ
2. mb_id 값은 이미 인덱스값에 unique 인덱스가 걸려있는데 여기서 추가로 더 해야될게있나요??
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
출석체크가 몰리는 시간에 저렇게 슬로우쿼리가 나오는거보니 그럼 소스를 손봐야 해결이 되는건가요?? 신경써주셔서 감사합니다. 채택해드렸습니다. ㅠ.ㅠ