는이 같은 데이터를 포함하는 테이블의 열에서 전체 텍스트 인덱스를 읽고 있습니다전체 텍스트 색인 검색 페이지의 많은 수의
searchColumn
90210 Brooks Diana Miami FL [email protected] 5612233395
열 먼저 우편의 총, 마지막 이름입니다 이름, 도시, 주, 이메일 및 전화 번호.
이 열을 사용하여 가능한 정보를 기반으로 고객을 검색합니다.
내가 걱정하는 문제는이 열에 대한 쿼리를 수행 할 때 발생하는 많은 읽기 때문입니다. 내가 사용하고 쿼리는 다음과 같습니다 프로파일 러를 실행할 때
declare @searchTerm varchar(100) = ' "FL" AND "90210*" AND "Diana*" AND "Brooks*" '
select *
from CustomerInformation c
where contains(c.searchColumn, @searchTerm)
지금, 나는이 검색 일반 인덱스와 여러 변수를 사용하여 다른 접근 방식을 사용하는 경우와 달리, 하나의 행을 반환하는 읽기에 대한 50,000 페이지가 있음을 알 수 아래처럼 @firstName
, @LastName
같이 분류 :
WHERE C.FirstName like coalesce(@FirstName + '%' , C.FirstName)
AND C.LastName like coalesce(@LastName + '%' , C.LastName)
etc.
나는 단지 약 140 페이지 읽기를 얻을이 방법을 사용. 접근 방식이 상당히 다르다는 것을 알고 있지만 전체 텍스트 버전의 읽기가 더 많은 이유와 일반적인 색인을 사용할 때 얻을 수있는 숫자에 가까운 방법으로 표현할 수있는 방법이 있는지 이해하려고합니다.
좋아요,'*'에 대한 코멘트를 얻었습니다. 필자가 필요로하는 컬럼 만 가져 왔고,'* '를 넣으면 질문이 너무 복잡해지지 않습니다. 왜냐하면 많은 컬럼이 있기 때문입니다. 또한, 엔진이 페이지를 처음으로 들여다 보면 조건을 확인해야 할 때마다 페이지를 읽는 것이 이상 할 것이라고 생각합니다. 하지만 브렌트의 튜토리얼을 확인해 보겠습니다. –