이 쿼리문의 속도 개선 가능할까요? 정보
이 쿼리문의 속도 개선 가능할까요?본문
select A.wr_subject, A.wr_id, A.wr_comment, trim(substring(A.wr_datetime,3,9))
from 테이블 A inner join 테이블 B on A.wr_num=B.wr_num
and A.wr_id=B.wr_parent and A.wr_is_comment!=B.wr_is_comment
where (to_days(B.wr_datetime) >= (to_days(now()) - 30)) and B.mb_id = '아이디'
group by A.wr_parent
order by B.wr_id desc
일단 테이블 A,B는 동일 테이블입니다.
테이블 행의 갯수는 대략 60만개정도구요.
아무래도 조인문이다보니 60만개의 테이블 2개(맞나? -0-)를 불러와서 비교하는거라 그런지 시간이 많이 걸립니다. 대략 1.6초~1.7초정도 걸리는데 이걸 1초 이내로 줄이는게 목표입니다.
원래는 where문에 날짜조건이 없으면 1.8~1.9초정도 걸리는데 저 조건문을 넣으니까 0.1~0.2초정도 단축이 된거 같더라구요.
근데 제 생각에는 쿼리문을 보면
일단 테이블에서 전체행을 다 가져온다음에 비교를 시작하는거라
오래걸리는게 아닐까 싶습니다.
그래서 궁금한데 처음에 데이터를 가져올때 조건문으로 필터링이 된걸 가져와서 조인을 할 수는 없는건가요?
고수분들 도와주세요 ㅠㅠ;
from 테이블 A inner join 테이블 B on A.wr_num=B.wr_num
and A.wr_id=B.wr_parent and A.wr_is_comment!=B.wr_is_comment
where (to_days(B.wr_datetime) >= (to_days(now()) - 30)) and B.mb_id = '아이디'
group by A.wr_parent
order by B.wr_id desc
일단 테이블 A,B는 동일 테이블입니다.
테이블 행의 갯수는 대략 60만개정도구요.
아무래도 조인문이다보니 60만개의 테이블 2개(맞나? -0-)를 불러와서 비교하는거라 그런지 시간이 많이 걸립니다. 대략 1.6초~1.7초정도 걸리는데 이걸 1초 이내로 줄이는게 목표입니다.
원래는 where문에 날짜조건이 없으면 1.8~1.9초정도 걸리는데 저 조건문을 넣으니까 0.1~0.2초정도 단축이 된거 같더라구요.
근데 제 생각에는 쿼리문을 보면
일단 테이블에서 전체행을 다 가져온다음에 비교를 시작하는거라
오래걸리는게 아닐까 싶습니다.
그래서 궁금한데 처음에 데이터를 가져올때 조건문으로 필터링이 된걸 가져와서 조인을 할 수는 없는건가요?
고수분들 도와주세요 ㅠㅠ;
댓글 전체

정확한 상황을 알아야 튜닝이 가능합니다.
게시판에 mb_id가 키가 아니니까
이것으로 시작하는 인덱스를 하나 추가해 보면 좋을 듯합니다.
60만 건이면 인덱스 추가할 때 시간 좀 걸리겠네요.
mb_id 대신 mb_no를 사용하세요.
게시판에 mb_id가 키가 아니니까
이것으로 시작하는 인덱스를 하나 추가해 보면 좋을 듯합니다.
60만 건이면 인덱스 추가할 때 시간 좀 걸리겠네요.
mb_id 대신 mb_no를 사용하세요.
답변 감사합니다.
근데 제가 인덱스를 사용할 줄 몰라서 ㅠㅠ;
그리고 게시판 테이블에 mb_no라는 필드는 없던데요?
멤버테이블에 있는건데 이걸 어떻게 써야될지 -0-;
근데 제가 인덱스를 사용할 줄 몰라서 ㅠㅠ;
그리고 게시판 테이블에 mb_no라는 필드는 없던데요?
멤버테이블에 있는건데 이걸 어떻게 써야될지 -0-;