SQL Server 전체 텍스트 쿼리 성능 향상

기술 자료 번역 기술 자료 번역
기술 자료: 2549443 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

이 문서는 또한 데이터를 필터링 하 고 전체 텍스트 검색 조건자 (예: CONTAINS CONTAINSTABLE)를 사용 하 여 Microsoft SQL Server 쿼리 성능을 향상 시키는 방법을 설명 합니다. 예를 들어,이 메서드는 다음 쿼리 성능이 향상 됩니다.
select * from dbo.ftTest where CONTAINS(TextData, '"keyword"') and CDate > @date
이 이렇게 하면 쿼리 디자인, 테이블 스키마 및 전체 텍스트 인덱스를 전체 텍스트 검색 엔진은 관계형 엔진에 보내기 전에 결과를 필터링 하는 방식으로 수 있습니다. 따라서 관계형 엔진이 큰 데이터 집합을 필터링 하려면 없습니다.

추가 정보

영향 쿼리 성능을 전체 텍스트 검색 엔진의 나머지 하기 전에 처리 해야 하는 데이터 양입니다 원칙 요소는 전체 텍스트 검색 쿼리를 만들 때 데이터를 관계형 엔진에 전송 됩니다. SQL Server 나중에 처리 해야 하는 행의 수를 줄이기 위해 행 아웃 초기 필터링 쿼리 성능을 향상 시킬 수 있습니다.

SQL Server 2008 이전에 릴리스된 버전의 SQL Server 전체 텍스트 검색 엔진은 검색어와 일치 하는 모든 행을 반환 하 고 관계형 엔진 필터 적용. 이 문제를 SQL Server 2008, SQL Server 2008 R2 및 SQL Server 2012에서 향상 되었습니다. 그러나 데이터베이스 인덱스에서 전체 텍스트 검색 인덱스가 매우 다르게 구성 되므로 이러한 향상 된이 기능을 사용 하는 것이 어렵습니다. 또한 전체 텍스트 검색 엔진과 관계형 엔진이 매우 다르게 작동 합니다. 따라서이 문서에서 설명 하는 메서드 속성 함수 (TVF) 초기 행을 필터링 하 고 나중에 처리 해야 하는 행의 수를 줄이기 위해 사용 합니다.

예를 들어, 다음 쿼리 계획 CONTAINS 검색 문자열과 일치 하는 131051 행을 반환 합니다. 또한 계획에 대 한 조인 연산자를 인덱스 검색을 사용 하 여 추가 필터링을 수행 합니다.
Rows StmtText 
-------------------- -----------------------------------------------------------------------------------------------------------
1167 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate> '08/05/2019' 

1167 |--Merge Join(Left Semi Join, MERGE:([FTSdb].[dbo].[fttest].[ID])=(FulltextMatch.[docid]), RESIDUA
5858 |--Sort(ORDER BY:([FTSdb].[dbo].[fttest].[ID] ASC)) 
5858 | |--Clustered Index Seek(OBJECT:([FTSdb].[dbo].[fttest].[clidx1]), SEEK:([FTSdb].[
131051 |--Table-valued function 
그러나 쿼리 조건자로 전체 텍스트 고유 인덱스 키 열을 포함 하는 경우 전체 텍스트 검색 엔진 조건자는 전체 텍스트 수준에서 결과 필터링 할 사용할 수 있습니다. 이 상황에서 추가 필터링을 적용 해야 전에 TVF는 훨씬 적은 양의 데이터를 반환 합니다. 예를 들어, 다음 쿼리는 c2 조건과 일치 해야 하는 다섯 개의 값을 지정 하 고 TVF는 다섯 개의 값이 일치 하는 결과만 반환:
Rows StmtText 

-------- ---------------------------------------------------------------------------------------------------------------------------------
5 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate > '08/05/2019' and ID in ( 654051, 644051, 649106, 465, 105)

5 |--Nested Loops(Left Semi Join, OUTER REFERENCES:([FTSdb].[dbo].[fttest].[ID])) 
5 |--Index Seek(OBJECT:([FTSdb].[dbo].[fttest].[idx1]), SEEK:([FTSdb].[dbo].[fttest].[ID]=(105) OR ...
5 |--Table-valued function
고유 인덱스 키에 사용 되는 값을 아래로 밀기를 전체 텍스트 검색 엔진의 기능에는 다음 방법의 기본입니다.

조건자에 날짜/시간 데이터 형식 열 포함 되어 있으면이 조건자와 일치 하는 행만 생성 되는 고유 인덱스 키 열에 날짜 정보가 포함 됩니다. 이렇게 하려면 키 열의 날짜 정보를 논리적으로 통합 해야 합니다. 그러나 키 열의 데이터 형식 및 쿼리를 사용 하는 응용 프로그램을 변경 할 수도 있습니다.

메서드를 구현 하는 데이터 형식의 전체 텍스트 고유 변경 키를 BIGINT ID입니다. 키 ID 캡처의 처음 4 바이트 연도, 월 및 날짜에서 날짜 열 및 마지막 4 바이트 값은 그대로 유지 됩니다. 예를 들어 연도에 ID를 참조할 수 있는 키의 첫 번째 바이트에서 다음 바이트는 달으로 참조할 수 및 날짜에 마지막 두 바이트를 참조할 수 있습니다. 응용 프로그램은이 데이터 형식 변경을 수용 해야 합니다.

범위 조건자 조건자에 키 하 고 번역 id입니다. 예를 들어, "x<>< y"="" range="" predicate="" can="" be="" translated="" to="" the="" "(x*2^32="">< id="">< y*2^32)"="" predicate.="" because="" the="" translated="" predicate="" is="" a="" predicate="" on="" the="" full-text="" key,="" the="" predicate="" will="" be="" pushed="" down="" into="" the="" full-text="" streaming="" table-valued="" functions="" (stvf).="" this="" behavior="" effectively="" performs="" searches="" within="" the="" date="">

속성

기술 자료: 2549443 - 마지막 검토: 2013년 3월 22일 금요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Enterprise Evaluation
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • Microsoft SQL Server 2012 Enterprise
키워드:?
kbmt KB2549443 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:2549443

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com