Я пытаюсь выполнить произвольное сопоставление с произвольным текстовым поиском и задаюсь вопросом, могу ли я улучшить этот запрос (используя MSSQL 2008):
@ FreeText - это таблица, в которой каждая строка представляет собой поисковое слово
DECLARE @WordCount = (SELECT COUNT(*) from @FreeText)
SELECT p.ID
FROM Product p
OUTER APPLY
(
SELECT COUNT(ID) as MatchCount
FROM Product pm
INNER JOIN @FreeText ft
ON pm.txt like '%'+ft.text+'%'
WHERE pm.ID = p.ID
AND (SELECT TOP 1 [text] FROM @FreeText) IS NOT NULL
)MC
WHERE MatchCount = @WordCount
Поэтому мне интересно, есть ли способ избежать "FROM Product pm
" во внешнем применении?
Я не могу всегда INNER JOIN @FreeText
, потому что иногда мы не используем freeпоиск текста.
Буду очень признателен за любые мысли или советы, также дайте мне знать, если я смогу что-то уточнить.Заранее спасибо.
PS Я знаю, что в MS SQL есть поиск FREETEXT (), но я, к сожалению, пока не могу его использовать.