나는 매우 느리게 실행 다음과 같은 쿼리가 :전체 텍스트 검색은 매우 느린 가입
SELECT Id FROM
(
SELECT E.MessageId
FROM [MessageEnvelopes] AS E INNER JOIN
[Folders] AS F ON F.Id = E.FolderId
WHERE F.MailboxId = 1
) AS SUB1 INNER JOIN
(
SELECT M.Id
FROM [Messages] AS M
WHERE CONTAINS(M.*, '"my*" AND "search*"')
) AS SUB2
ON SUB1.MessageId = SUB2.Id
는 기본적으로,이 전체 텍스트 검색 (SUB2)와 메시지 선택 쿼리 (SUB1)를 결합합니다. 하위 쿼리는 명확하게 구분되어 있습니다 (하위 쿼리를 함께 조인 할 때와 동일한 문제가 발생 함). 이 쿼리는 약 15 초가 걸리는 반면, 두 하위 쿼리는 개별적으로 실행될 때 즉시 반환됩니다.
관련된 테이블은 작습니다 (최대 2000 행). 모든 외래 키에는 색인이 있습니다. 실행 계획에 병목 현상이 나타나지 않습니다. 이 쿼리가 왜 그렇게 느리게 실행되는지 나는 잘 모른다.
CONTAINSTABLE()을 사용해 보셨습니까? 이것은 일반적으로 CONTAINS()보다 더 잘 수행되어야합니다. –
Greco, 같은 일은 발생하지 않습니다. – Carvellis