[SQL] 성능과 같은 '% 검색어 %'전체 텍스트 검색을 CONTAINS 쿼리 대
SQL성능과 같은 '% 검색어 %'전체 텍스트 검색을 CONTAINS 쿼리 대
나는 하나의 단어를 검색하고자하는 상황이있다.
이 시나리오의 경우, 어떤 쿼리 성능의 관점에서 좋은 것?
Select Col1, Col2 from Table Where Col1 Like '%Search%'
또는
Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')
?
해결법
-
==============================
1.합니다 (포함 된 사용) 전체 텍스트 검색은 / 와일드 카드와 함께 LIKE를 사용하는 것보다 더 효율적으로 빨라집니다. 전체 텍스트 검색 (FTS)는 FTS 사용할 수있는 전체 텍스트 인덱스를 정의 할 수있는 기능이 포함되어 있습니다. 당신이 기능을 사용하고자하는 경우 나도 몰라 당신은 FTS 인덱스를 정의하지 왜 ...
합니다 (포함 된 사용) 전체 텍스트 검색은 / 와일드 카드와 함께 LIKE를 사용하는 것보다 더 효율적으로 빨라집니다. 전체 텍스트 검색 (FTS)는 FTS 사용할 수있는 전체 텍스트 인덱스를 정의 할 수있는 기능이 포함되어 있습니다. 당신이 기능을 사용하고자하는 경우 나도 몰라 당신은 FTS 인덱스를 정의하지 왜 ...
등을 왼쪽으로 와일드 : 인덱스를 사용할 수있다 (IE LIKE '% 검색') 테이블 검색을 보장 (하나의 열에 존재 가정). 나는 시험 및 비교하지만, 정규식은 같은 함정을 가지고하지 않았습니다. 인덱스를 사용할 수 없습니다 LIKE '% 검색'및 LIKE '% 검색 %'를 명확히하기 위해; LIKE '검색 %는'인덱스를 사용할 수 있습니다.
-
==============================
2.일반적인 데이터베이스의 경우, 훨씬 더 빨리 필드 존재가 검색에 해당하는 전체 텍스트 검색 인덱스가 내장되어 가정 할 수있는 검색 포함 함. 에서 LIKE 연산자의 평가는 일반적으로 모든 데이터를 읽을 수 있어야하므로 인덱스를 사용하지 않습니다.
일반적인 데이터베이스의 경우, 훨씬 더 빨리 필드 존재가 검색에 해당하는 전체 텍스트 검색 인덱스가 내장되어 가정 할 수있는 검색 포함 함. 에서 LIKE 연산자의 평가는 일반적으로 모든 데이터를 읽을 수 있어야하므로 인덱스를 사용하지 않습니다.
-
==============================
3.표 그 자체의 검색처럼 성능을 죽일 것이다. 더 나은은 CTE에 대한 검색과 같이 적용합니다.
표 그 자체의 검색처럼 성능을 죽일 것이다. 더 나은은 CTE에 대한 검색과 같이 적용합니다.
from https://stackoverflow.com/questions/3213998/performance-of-like-query-vs-full-text-search-contains-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 제로 SQL 디자인에 의해 교착 상태 - 어떤 코딩 패턴? (0) | 2020.05.20 |
---|---|
[SQL] 매우 큰 테이블의 성능을 계산 MYSQL (0) | 2020.05.20 |
[SQL] PL / SQL에서 동적 SELECT INTO 절에 바인드 변수 사용 (0) | 2020.05.20 |
[SQL] 어떻게 SQL에서 그룹 당 증분 그룹 번호를 반환 (0) | 2020.05.20 |
[SQL] MySQL은 - 하나 개의 컬럼은 DISTINCT되는 경우 모든 열을 SELECT (0) | 2020.05.20 |