2010-03-20 4 views

답변

27

쿼리가 foo LIKE 'abc%' 또는 foo LIKE 'abc%def%' 인 경우 MySQL에서 인덱스를 사용할 수 있습니다. 첫 번째 와일드 카드 앞에 어떤 부분이나 문자열에 대한 색인을 사용할 수 있습니다. 문자열 내의 아무 곳에 나 단어를 매치 할 필요가 있다면, FULLTEXT 개의 색인을 대신 사용해보십시오. 인덱스에

더 자세히 : http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html

전체 텍스트 검색 : http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

+0

본질적으로, 당신이 인덱스 B + 트리 인덱스 열 경우, 그 충분합니다. 자동으로 MySQL은 LIKE 쿼리를 빠르게 검색합니다. – Antony

4

음과 같은 간단한 최적화는 엔진이 인덱스를 사용하여 검색 공간을 좁힐 수있는 것이기 때문에 (예를 들어 "test%" 대신 "%test" 또는 "%test%"의) 일정한 접두어가하는 것입니다. 그러나 모든 상황에서 가능하지는 않습니다.

가끔 전처리 단계를 통해 와일드 카드 검색을 일반적인 평등 또는 전체 텍스트 검색으로 바꿀 수 있습니다. 데이터 최적화를 시도하는 것보다 와일드 카드 검색이 필요하지 않도록 데이터를 구조화하는 방법을 찾아 더 많은 것을 얻을 수 있습니다.

관련 문제