속도가 빨라지지 않아요 ㅠㅠ > 십년전오늘

십년전오늘

10년전 추억의 책장을 넘기며

속도가 빨라지지 않아요 ㅠㅠ 정보

속도가 빨라지지 않아요 ㅠㅠ

본문

select wr_id, wr_subject, wr_link1, wr_5, wr_6 from g4_write_data where wr_datetime between '2009년부터' and '2010년까지' and wr_subject like '%그누보드%' order by wr_id

위와같은 쿼리문을 돌리는데요

3천만개의 게시물중 2009~2010년간 쌓인 데이터중 그누보드 글씨가 들어간것을 추출하려고 하는데요..

거의 20분 가까이 걸리는거에요..

이거 어떻게 해야 빨라질 수 있는건가요?? ㅠㅠ

------------------------------내용 추가 --------------------------

and wr_subject like '%그누보드%' 이부분이

and wr_subject like '%그누보드%'이렇게 하나가 될땍도 있구요

and wr_subject like '%그누보드%' and wr_subject like '%그누보드%' 이렇게 두개 또는 세개까지 검색하는 상황이 될 수도있어요..

이럴때 어떻게 해야 빠를까요?
and wr_subject like '%그누보
  • 복사

댓글 전체

쿼리문 구조가 인덱스를 타기 힘들겠네요.
일단 그나마 좀 빠르게 하려면 제일 첫번째 조건문인 wr_datetime 필드를 인덱스를 걸어보세요. = _=;
mysql 5.5 이상이라면 like %키워드% 속도가 그럭저럭 좀 빠른편인데, 그 이하라면 이건 완전히 순차검색이 되어버려서 속도를 잡아먹는 괴물쿼리가 됩니다.
wr_datetime 로 검색한걸 메모리에 올린다음에 like 검색을 돌리면 좀 나을것 같긴 하네요.
한번만 하고 말건가요? 아니면 지속적으로 저 쿼리를 써야하나요?
like 검색을 빠르게 하기 위해 fulltext 인덱스를 활용하는 방법도 있긴한데요.
문제는 fulltext 인덱스를 생성하는 시간이나, 한번 추출하는 시간이나 엇비슷할거 같네요.
지속적으로 쓰실거라면, fulltext 인덱스를 이용해보세요.
mysql 5.5 부터는 innodb도 fulltext 인덱스를 지원하는데 그 이하라면 일단 테이블구조를 myisam으로 변경해야하는 문제가... = _=;
테이블은 INNODB로 되어있구요 메모리는 20기가정도 할당 해놨어요..

그래서 제 생각에는 메모리에 충분히 다 올라간 상태이지 않을까 싶어요.. 근데 ..저 쿼리가 20분 걸려요 ㅠㅠ
© SIRSOFT
현재 페이지 제일 처음으로