2012-06-09 2 views
3

mysql에서 InnoDB 엔진을 사용하고 있습니다. 버전 : 5.1.61-community-log. 검색 할 텍스트의 길이가 100 자 미만입니다. LIKE '% searchstring %'의 쿼리 성능이 텍스트 인덱싱으로 향상됩니까?mysql에서 텍스트를 인덱싱하면 LIKE '% search %'로 텍스트 검색이 향상됩니까

편집 :
jquery auto-suggest 구성 요소에이 쿼리를 사용하고 있습니다.
제 3 자 웹 호스팅 서비스를 사용하고 있습니다. 업그레이드가 나를위한 옵션이 아닙니다.

답변

4

아니요, 색인을 추가해도 LIKE '%foo%' 개의 검색어 (많은 *)에 도움이되지 않습니다. A LIKE 조건은 LIKE 'foo%'

과 같이 상수가있는 경우에만 인덱스를 효율적으로 사용할 수 있습니다. 대신 full text search을 고려해야합니다. MySQL 5.5 이상을 사용하고 있다면 MyISAM 엔진 만 지원됩니다. MySQL 5.6 이후 또는 새로운 InnoDB는 전체 텍스트 검색을 지원한다.

이전 버전의 MySQL을 사용하고 있고 업그레이드 할 수 없으며 외장형 제약 조건과 같은 InnoDB의 다른 기능이 필요하기 때문에 저장소 엔진을 변경할 수없는 경우 새로운 MyISAM을 만들 것을 고려할 수 있습니다 테이블에는 기본 키와 텍스트 열만 저장됩니다. 이 테이블을 사용하여 다른 전체 열에 대한 액세스가 필요한 경우 빠른 전체 텍스트 검색을 수행하고 원래 테이블에 조인 할 수 있습니다.

또한 같은 외부 텍스트 검색 엔진을 사용하여 고려할 수

: 추가 인덱스가 인덱스을 커버하는 경우

(*) 귀하의 쿼리, 당신은 색인을 추가하여 작은 개선을 얻을 것이다. 인덱스의 너비가 더 작기 때문에 인덱스 전체 스캔이 전체 테이블의 전체 스캔보다 빠릅니다.

+0

참조 전체 텍스트는 MyISAM에서만 사용할 수 있습니다. 나머지 테이블은 InnoDB 엔진을 사용합니다. 한 테이블에서 MyISAM을 사용하고 InnoDB를 사용하는 것이 좋습니다. 이 테이블은 INNER JOIN 된 테이블의 나머지와 많이 있습니다. – Terminal

+0

@Terminal : 전체 텍스트 검색은 MySQL 5.5 이하를 사용하는 경우에만 MyISAM 엔진과 함께 사용할 수 있습니다. MySQL 5.6에서는 InnoDB도 지원된다. 어떤 버전의 MySQL을 사용하고 있습니까? 옵션을 업그레이드하고 있습니까? –

+0

나의 현재 MySQL 버전 : 5.1.61-community-log. 웹 호스팅 서비스를 사용하고 있으므로 나를위한 옵션이 아닌 업그레이드하십시오 – Terminal

관련 문제