2009-09-24 4 views
1

현재 내가 다음 전체 텍스트 인덱스 설정이 있습니다은 전체 텍스트 검색에 최적화 만들기

전체 텍스트에 :

번호 - 주소에 대한 우편 번호

Select id, MATCH(Number, Name, Suffix, Direction, City, State, ZIPCode) 
AGAINST ("Test") as Relevance from test where 1, 
and MATCH(Number, Name, Suffix, Direction, City, State, ZIPCode)  
AGAINST ("+Test" IN Boolean Mode) HAVING Relevance > 0.2 

- 이름 - 접미사 - 방향 - 도시 - 상태 . 현재 MySQL을위한 MyISAM db 타입이지만, 값 비싼 쿼리가 발생했을 때 전체 테이블을 잠그고 백만 행을 넘을 때 가능한 최선을 최적화하려고하는 방법을 정말 좋아하지 않습니다.

Innodb로 전환하면 도움이 되겠습니까? Innodb이 MyISAM에 대한 쿼리 유형을 지원합니까?

이 쿼리를 더 잘 최적화하고 전체 텍스트 검색을 유지하는 방법에 대한 다른 제안 사항이 있습니까?

감사합니다.

답변

1

InnoDB는 전체 텍스트 검색을 지원하지 않습니다.

또 다른 옵션은 설치하기 쉽고 놀랍도록 빠르다는 Sphinx을 사용하는 것입니다.

+0

이 문제를 조사합니다. 다른 주목할만한 차이점이 있습니까? – Petrogad

+1

큰 응용 프로그램을 최적화하려고 할 때 잠시 동안 전체 텍스트 검색을했습니다. 성능이 너무 그렇게되었습니다. 우리는 innodb로 전환하고 추가 색인을 사용하는 것으로 끝났습니다. 전체 와일드 카드 검색 (예 : '% some %')이 매우 느릴지라도 실적은 거의 동일했습니다. 마지막으로, 나는 스핑크스로 바뀌었고 되돌아 보지 않을 것입니다. Sphinx는 MySQL과 잘 통합되지만 별도의 프로세스로 실행됩니다. – jonstjohn

+0

신난다는 그것을 소용돌이 줄 것이다! 고마워 – Petrogad

관련 문제