대용량에서 쿼리문 like 문만 사용해서 검색시 속도
본문
대략 데이터는 500만건 만들어놓고
제목 을 검색한다 하였을때요..
like '%문구%' 만 사용했을때
속도가 엄청 느린데요... 검색 속도를 올릴수있는 방법이 따로 있을가요?
필드가 텍스트 형태고 index 를 줘도 특정 단어만 검색하고 싶은지라... 안먹히는거 같고...
대형 포털 같은곳은 자료가 엄청 많을텐데 그런곳은 속도가 빠르자나요?
Ex) 구글 검색창 검색어 찾을때
뭔가 특별한 쿼리문 같은게 있을가요?
가려운 부분 긁어주실 고수님 계신가요~~ 답변 부탁드립니다 ^^;
답변 4
like 검색의 경우
%단어% 는 절대로 빠른 검색을 요하는 방법이 아닙니다.
문장이 긴 내용인 컨텐츠(제목/내용) 인경우
해시태그를 별도로 두는이유를 생각해볼수있습니다.
특정문장단어가 포함된 컨텐츠인경우
주로 추출되는 검색어를 단어단위로 별도로 검색어로 검색용테이블에 검색단어로 insert 처리를 하고
단어컬럼에 index를 걸어두고, 게시글(컨텐츠)의 키값(그누보드기준이라면 wr_id)를 fk로 저장해두어서
단어 추출시 연관정보를 추출해서 표기할수있습니다.
그러면 like검색이 아닌 index된 컬럼을 빠르게 검색이 가능하게됩니다.
쿼리문만으로는 더 빠른 방법은 없고, 제목을 fulltext index를 걸고 검색하면 빠릅니다. 그외 방법으로는 DB 설정 변경을 통한 튜닝이 있습니다.
엔진도 innodb나 메모리로 변경하셔도 되구요.
하드디스크가 안좋으면 ssd, nvme, 스카시 같은 좋은걸로 바꾸면 됩니다.
5천만건도 아니고 500만건은 사실 그리 많은 편이 아닙니다.
대규모 검색에서는 스핑쿠스나 엘라스틴 검색엔진을 주로 사용합니다.
fulltext index가 아니면
키워드 검색으로 방향을 잡아야 합니다.
저도 fulltext index 쓰는 게 답이라고 말하고 싶네요,
'제목'을 DB엔진이 중요단어별로 별도의 인덱스를 만들어주는 full index를 해당 테이블에 걸어주는 겁니다.