2

SQL Server 2012를 사용하고 있습니다. 테이블에 텍스트와 날짜 열이 있습니다. 텍스트 열은 전체 텍스트 색인을가집니다. 쿼리는 전체 텍스트 열에 대해 CONTAINS를 발행하지만 날짜 열에는보다 큼 조건을 포함해야합니다. SQL Server의 b-tree 및 전체 텍스트 인덱스 병합 성능에 대해 우려하고 있습니다.전체 텍스트 인덱스에 대한 혼합 된 쿼리

오라클의 경우 전체 텍스트 색인 (CTXCAT)에 "일반"열을 포함하지 않으면 "일반"열을 포함하여이 시나리오의 성능 측면을 해결하므로 전체 그런 -text 지수 : 그런

ctx_ddl.create_index_set('auction_set'); 
ctx_ddl.add_index  ('auction_set', 'start_date'); 

다음 쿼리 :

WHERE CATSEARCH (item_desc, '(toy dog) | "live animal"', 'start_date > ###') > 0 

그것은 SQL Server의 전체 텍스트 인덱스에 B- 트리 인덱스를 결합 할 수 있습니까?

SQL Server에서 쿼리 된 혼합 된 (전체 텍스트 & b-tree) 시나리오를 해결하는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

0

질문을 올바르게 이해하면 어떤 문제가 발생한다고 생각하지 않습니다. 종종 전체 텍스트와 b-tree를 결합하여 좋은 결과를 얻습니다. 전체 텍스트 검색을 수행 할 때 하나의 용어 만 사용하는 인덱싱 된 열과 마찬가지로 구분 된 "용어"를 인덱스로보고 있습니다 (SQL 통계를 제공하거나 가져옴). 어느 쪽이든, SQL은 실행 경로를 알아 내야합니다. 전체 텍스트 검색은 정수/날짜 값을 비교하는 것을 선호하지 않습니다.

나는 b-tree 개념의 효율성을 계속 사용하고 싶다고 생각한다. 전체 텍스트 카탈로그 색인 검색은 문자열을 구문 분석/비교하기 위해 "LIKE"를 사용하는 경우 훨씬 더 유리하지만 훨씬 더 둥근 검색으로 나타납니다.

내가 할 것은 :

SELECT * FROM MyTable 
    WHERE CONTAINS(columnName, '"Toy Dog" OR "live animal"') 
    AND start_date > ###; 

P.S. (this msdn article for syntax info 참조) 전체 텍스트 인덱싱 정수 데이터가있는 경우 해당 값이 카탈로그 인덱싱에서 무시되지 않도록 중지 목록을 해제하십시오.

희망 중 하나가 도움이됩니다. (아무도 대답하지 못해서 제 경험을 줄 것이라고 생각했습니다)

관련 문제