DECLARE @tempIdTable TABLE (ID uniqueidentifier, [RANK] int);
INSERT INTO @tempIdTable SELECT A.ID, KEY_TBL.[RANK]
FROM dbo.Advert AS A INNER JOIN FREETEXTTABLE(dbo.AdvertsView_en, TextData, 'drive', LANGUAGE 'English') AS KEY_TBL ON A.ID = KEY_TBL.[KEY]
[color=red]WHERE A.ID NOT IN (SELECT ID FROM @tempIdTable);[/color]
INSERT INTO @tempIdTable SELECT A.ID, KEY_TBL.[RANK]
FROM dbo.Advert AS A INNER JOIN FREETEXTTABLE(dbo.AdvertsView_no, TextData, 'drive', LANGUAGE 'Norwegian') AS KEY_TBL ON A.ID = KEY_TBL.[KEY]
[color=red]WHERE A.ID NOT IN (SELECT ID FROM @tempIdTable);[/color]
WITH B AS(
SELECT A.*, B.[RANK], ROW_NUMBER() OVER(ORDER BY [RANK] DESC) as RowNumber
FROM Advert AS A INNER JOIN @tempIdTable AS B ON A.ID = B.ID WHERE (A.AdvertStateID = 3)
)
SELECT * FROM B WHERE AdvertStateID = 3 AND (RowNumber BETWEEN 1 AND 11) ORDER BY [RANK] DESC, Title Asc;
красным выделил очень плохую часть запроса, которая убивает перфоманс мне, каким образом переделать, subquery() теперь тоже не канает особо... Что-то если я его в CTE использую не канает.
Та же проблема, в двух инсертах вставляются записи с одинаковыми айдишниками каким образом мне фильтровать повторяющиеся данные?