Bara för att fnissa igen, kan du prova den här frågan:
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]
Ibland är det rätta svaret att kasta mer hårdvara på problemet; även om jag håller med om att detta borde vara en sista utväg och inte en första. Huruvida det här specifika problemet kräver mer CPU, mer minne eller fler spindlar beror på många faktorer, inklusive din nuvarande hårdvara.
Din resultatuppsättning på 1,6 miljoner rader, vart och ett av 4 heltal, bör sorteras snabbt på alla rimliga mängder aktuell hårdvara. Eftersom förseningar uppstår verkar det troligt att för mycket bearbetning sker på basuppsättningen på 900 miljoner rader, och utmaningen är att identifiera varför. Kan du bifoga mer information om frågeplanen?