복붙노트

[SQL] 성능과 같은 '% 검색어 %'전체 텍스트 검색을 CONTAINS 쿼리 대

SQL

성능과 같은 '% 검색어 %'전체 텍스트 검색을 CONTAINS 쿼리 대

나는 하나의 단어를 검색하고자하는 상황이있다.

이 시나리오의 경우, 어떤 쿼리 성능의 관점에서 좋은 것?

Select Col1, Col2 from Table Where Col1 Like '%Search%'

또는

Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')

?

해결법

  1. ==============================

    1.합니다 (포함 된 사용) 전체 텍스트 검색은 / 와일드 카드와 함께 LIKE를 사용하는 것보다 더 효율적으로 빨라집니다. 전체 텍스트 검색 (FTS)는 FTS 사용할 수있는 전체 텍스트 인덱스를 정의 할 수있는 기능이 포함되어 있습니다. 당신이 기능을 사용하고자하는 경우 나도 몰라 당신은 FTS 인덱스를 정의하지 왜 ...

    합니다 (포함 된 사용) 전체 텍스트 검색은 / 와일드 카드와 함께 LIKE를 사용하는 것보다 더 효율적으로 빨라집니다. 전체 텍스트 검색 (FTS)는 FTS 사용할 수있는 전체 텍스트 인덱스를 정의 할 수있는 기능이 포함되어 있습니다. 당신이 기능을 사용하고자하는 경우 나도 몰라 당신은 FTS 인덱스를 정의하지 왜 ...

    등을 왼쪽으로 와일드 : 인덱스를 사용할 수있다 (IE LIKE '% 검색') 테이블 검색을 보장 (하나의 열에 존재 가정). 나는 시험 및 비교하지만, 정규식은 같은 함정을 가지고하지 않았습니다. 인덱스를 사용할 수 없습니다 LIKE '% 검색'및 LIKE '% 검색 %'를 명확히하기 위해; LIKE '검색 %는'인덱스를 사용할 수 있습니다.

  2. ==============================

    2.일반적인 데이터베이스의 경우, 훨씬 더 빨리 필드 존재가 검색에 해당하는 전체 텍스트 검색 인덱스가 내장되어 가정 할 수있는 검색 포함 함. 에서 LIKE 연산자의 평가는 일반적으로 모든 데이터를 읽을 수 있어야하므로 인덱스를 사용하지 않습니다.

    일반적인 데이터베이스의 경우, 훨씬 더 빨리 필드 존재가 검색에 해당하는 전체 텍스트 검색 인덱스가 내장되어 가정 할 수있는 검색 포함 함. 에서 LIKE 연산자의 평가는 일반적으로 모든 데이터를 읽을 수 있어야하므로 인덱스를 사용하지 않습니다.

  3. ==============================

    3.표 그 자체의 검색처럼 성능을 죽일 것이다. 더 나은은 CTE에 대한 검색과 같이 적용합니다.

    표 그 자체의 검색처럼 성능을 죽일 것이다. 더 나은은 CTE에 대한 검색과 같이 적용합니다.

  4. from https://stackoverflow.com/questions/3213998/performance-of-like-query-vs-full-text-search-contains-query by cc-by-sa and MIT license