Tylko dla chichotów, czy możesz spróbować tego zapytania:
select
[sID],
ROW_NUMBER() over (partition by [sID] order by [wordPos]) [rn],
[wordPos], [FTSindex].[wordID]
from [FTSindex]
join (
values (428), (2112)
) w (wordID) on w.wordID = [FTSindex].wordID
order by [sID], [rn]
Czasami poprawną odpowiedzią jest rzucenie większej ilości sprzętu na problem; chociaż zgadzam się, że powinna to być ostatnia deska ratunku, a nie pierwsza. To, czy ten konkretny problem wymaga więcej procesora, pamięci lub większej liczby wrzecion, zależy od wielu czynników, w tym od posiadanego sprzętu.
Twój zestaw wyników składający się z 1,6 miliona wierszy, każdy z 4 liczbami całkowitymi, powinien szybko posortować na dowolnej rozsądnej ilości bieżącego sprzętu. Ponieważ pojawiają się opóźnienia, wydaje się prawdopodobne, że w podstawowym zestawie 900 milionów wierszy występuje zbyt dużo przetwarzania, a wyzwaniem jest określenie, dlaczego. Czy możesz dołączyć więcej szczegółów na temat planu zapytań?