У меня есть следующий запрос, который использует полнотекстовый индекс для поиска ТОП-5 продуктов (из таблицы RawProducts), соответствующих запросу, в данном Магазине (заполненном переменная @ShopId). В настоящий момент я повторяю эту процедуру снова и снова для каждого ShopId (есть 27 магазинов) - это немного медленнее.Оптимизация полного текстового запроса SQL 2008 (CONTAINSTABLE)
Мой вопрос: может ли кто-нибудь сообщить мне, как изменить запрос, чтобы принять, скажем, список разделенных запятой ShopIds в переменной @ShopId и вернуть ТОП-5 матчей из каждого магазина?
Вот запрос до сих пор:
DECLARE @ShopId uniqueidentifier
SET @ShopId = '49506541-4ce2-40ac-812a-7ab262e6f0b0'
SELECT TOP 5
ftt.RANK,
rp.*
FROM RawProducts rp
JOIN CONTAINSTABLE(RawProducts,
RawProductName,
'ISABOUT("*radox*","*shower*")') AS ftt ON ftt.key = rp.RawProductId
WHERE rp.ShopId = @ShopId
ORDER BY ftt.RANK DESC
UDFs обычно быстрее, и альтернатива XML будет работать на SQL Server 2005. –