>  기사  >  데이터 베이스  >  MySQL의 전체 텍스트 검색 소개

MySQL의 전체 텍스트 검색 소개

巴扎黑
巴扎黑원래의
2017-05-12 14:18:291540검색

전체 텍스트 검색 이해

모든 엔진이 전체 텍스트 검색을 지원하는 것은 아닙니다. 21장에서 언급했듯이 MySQL은 여러 기본 데이터베이스 엔진을 지원합니다. 이 책에 설명된 대로 모든 엔진이 전체 텍스트 검색을 지원하는 것은 아닙니다. 가장 일반적으로 사용되는 두 가지 엔진은 MyISAM과 InnoDB입니다. 전자는 전체 텍스트 검색을 지원하지만 후자는 지원하지 않습니다. 이것이 바로 이 책에서 생성된 대부분의 샘플 테이블이 InnoDB를 사용하지만, 한 샘플 테이블(productnotes 테이블)은 MyISAM을 사용하는 이유입니다. 응용 프로그램에 전체 텍스트 검색 기능이 필요한 경우 이 점을 명심해야 합니다.

와일드카드 연산자를 사용하여 텍스트(및 텍스트 일부)를 일치시키는 LIKE 키워드입니다. LIKE를 사용하면 열 내 위치에 관계없이 특수 값이나 부분 값이 포함된 행을 찾을 수 있습니다.

정규 표현식과 열 값 일치에 대한 추가 소개로 텍스트 기반 검색을 사용합니다. 정규식을 사용하면 필요한 줄을 찾는 매우 복잡한 일치 패턴을 작성할 수 있습니다.

이러한 검색 메커니즘은 매우 유용하지만 몇 가지 중요한 제한 사항이 있습니다.

1. 성능 - 와일드카드 및 정규식 일치는 일반적으로 MySQL이 테이블의 모든 행을 일치시키도록 요구합니다(이러한 검색에서는 테이블 인덱스를 거의 사용하지 않습니다). 따라서 이러한 검색은 검색되는 행 수가 증가함에 따라 매우 많은 시간이 소요될 수 있습니다.

2. 명시적 제어 - 와일드카드와 정규식 일치를 사용하면 일치하는 것과 일치하지 않는 것을 명시적으로 제어하는 ​​것이 어렵습니다(항상 가능한 것은 아닙니다). 예를 들어, 단어는 일치해야 하고, 단어는 일치하지 않아야 하며, 첫 번째 단어가 일치하는 경우에만 단어가 일치하거나 일치하지 않도록 지정합니다.

3. 지능형 결과 - 와일드카드 및 정규식 기반 검색은 매우 유연한 검색을 제공하지만 둘 다 결과를 선택하는 지능적인 방법을 제공하지 않습니다. 예를 들어, 특정 단어를 검색하면 단일 일치 항목이 포함된 행과 여러 일치 항목이 포함된 행을 구분하지 않고 해당 단어가 포함된 모든 행이 반환됩니다(더 일치하는 순서대로 정렬). 마찬가지로, 특정 단어를 검색하면 해당 단어는 포함하지 않지만 다른 관련 단어는 포함하는 행은 찾지 않습니다.

전체 텍스트 검색을 통해 이러한 모든 제한 사항과 그 이상을 해결할 수 있습니다. 전체 텍스트 검색을 사용할 때 MySQL은 각 행을 별도로 볼 필요가 없으며 각 단어를 별도로 분석하고 처리할 필요가 없습니다. MySQL은 지정된 열의 각 단어에 대한 인덱스를 생성하고 해당 단어에 대해 검색을 수행할 수 있습니다. 이런 방식으로 MySQL은 어떤 단어가 일치하는지(어느 행에 해당 단어가 포함되어 있는지), 어떤 단어가 일치하지 않는지, 얼마나 자주 일치하는지 등을 빠르고 효율적으로 결정할 수 있습니다.

위 내용은 MySQL의 전체 텍스트 검색 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.