もう一度笑うために、このクエリを試してみてください:
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]
場合によっては、問題に対してより多くのハードウェアを投入することが正解です。私はこれが最初ではなく最後の手段であるべきだということに同意しますが。この特定の問題がより多くのCPU、より多くのメモリ、またはより多くのスピンドルを必要とするかどうかは、現在のハードウェアを含む多くの要因に依存します。
それぞれ4つの整数である160万行の結果セットは、現在のハードウェアの妥当な量ですばやくソートする必要があります。遅延が発生しているため、9億行の基本セットで処理が多すぎる可能性があります。課題は、その理由を特定することです。クエリプランの詳細を添付できますか?