Если ваш набор данных большой, @table не будет работать хорошо.Ваш row_number также может быть немного оптимизирован, чтобы не проходить мимо @ ToRow
JOIN (SELECT TOP(@ToRow) TV2.PrimaryKey, ROW_NUMBER() OVER(...) AS RowNo
FROM @TableVariable TV2
ORDER BY ... -- same clause as ROW_NUMBER()
Я бы пошел по маршруту Stored Proc, заполнив таблицу # (используя TOP, как показано выше), в то же времявремя либо SELECT INTO с использованием IDENTITY (int, 1,1), либо предварительного создания таблицы с идентификатором (кластеризованной), затем вместо DELETE и SELECT (2 ops) просто SELECT из #temptable на основе
WHERE id-column between x and y