시나리오 :T-SQL 인덱싱 서비스 SQL의 OPENQUERY 최적화
내가 검색을 반환하는 T-SQL 저장된 프로 시저 (SQL Server Management Studio)을 사용하고는 MS 인덱싱 서비스를 사용하여 텍스트 문서에 일치하고이 (간체) 검색어 :
이 쿼리는 며칠 전에 제대로 작동하지 않습니다. 완벽하게 구체화되지는 않았지만, 원하는 문서를 찾을 수 있기 때문에 Property Cache와 Master Index 간의 상호 작용이 제대로 작동하지 않는 것 같습니다.
1) SCOPE 매개 변수를 제거합니다 (즉, "FROM SCOPE) "로 절
2) WHERE 절을 제거하는 (그리고 그대로 SCOPE 기능) 그래서
, 내가 할 수있는 유지 FROM"원하는 단지 내용으로하거나 로케일에 의해 문서가 아니라에서 "찾기 둘 다 함께 사용.
하나의 옵션은 카탈로그를 다시 색인화하는 것이지만, 색인 다시 생성은 현재 최후의 수단으로 사용됩니다.
말했다되는 것을 나는 지정된 범위를 제외 할 쿼리를 재 작성하고 추가 WHERE 절을 포함한다 : 검색 할 때
SELECT *
FROM openquery(
filesystem2,
'SELECT
Path, Rank, Filename
FROM
SCOPE()
WHERE
CONTAINS('' FORMSOF (INFLECTIONAL, "test") '') and
Path like ''%e:\test\documents%''
') b
이 쿼리가 적절한 문서를 반환합니다. 그러나 필자는 LIKE 키워드를 사용하여 잠재적 인 성능에 대해 우려했습니다. 그래서 각 쿼리의 실행 계획을 조사했지만 정확히 같았습니다 ... 두 가지 중 하나를 말해줍니다 :
1) 인덱싱 서비스의 쿼리 구성 요소는 두 가지 쿼리를 최적화하는 방식으로 쿼리를 최적화합니다 같은.
2) DB 테이블이 참조되지 않을 때 조회 분석기가 원격 조회에 대한 정확한 피드백을 제공하지 않습니다.
질문 (특별한 순서는 없습니다). 누구나 다음에 대한 통찰력을 가지고 있습니까? :
1) 위의 시나리오에서 설명 된 속성 캐시와 마스터 인덱스간에 원래 문제가 발생할 수있는 원인은 무엇입니까?
실행 계획에 관한2 ),
a) Would the Querying Component process/optimize both queries the same?
b) Can Sql Server Management Studio provide execution plan feedback for openquery queries that do not reference any DB tables?
3) 마지막으로,보다 효율적인/빠르고, 왜 어떤 쿼리?
a) i.e. should I use the second one because it solves my problem?
고맙습니다!
통찰력을 가져 주셔서 감사합니다. 나는 귀하의 제안을 사용하여 좀 더 질의를 해 보았습니다 ... 그리고 그 솔루션을 사용하기로 결정했습니다. – dda